實戰案例 - 微信開發重點摘要之用戶唯一識別碼與網頁存取授權碼 (2)

在取得用戶同意授權碼之後,就可以接著拿 openidaccess token

openid 筆者稱之為用戶唯一識別碼access code 則是網頁存取授權碼。從騰訊的公眾平台開發文件可以知道,openid 是跟著用戶走的,每個用戶都有自己的識別碼,這個識別碼也是開發者在寫程式的過程中,區分微信用戶的途徑;而 access code 則有類似鑰匙的作用,有了這個和 openid 就能獲取用戶資訊,要取得用戶識別碼網頁存取授權碼,最關鍵的地方在這個網址:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

同樣看到網址中上色的部份,小寫 code 是參數,大寫 CODE 就是你在上個頁面獲取的用戶同意授權碼。底下附上獲取 openid 和 access token 的後端範例程式碼:

private void GetOpenidAndAccessToken(string code)
{
    try
    {
        wx_userweixin wxuBll = new wx_userweixin();

        //构造获取openid及access_token的url
        WxPayData data = new WxPayData();

        data.SetValue("appid", wxuBll.GetAppId(wid));
        data.SetValue("code", code);
        data.SetValue("grant_type", "authorization_code");
        data.SetValue("secret", wxuBll.GetAppSecret(wid));

        string url = "https://api.weixin.qq.com/sns/oauth2/access_token?" + data.ToUrl();

        //请求url以获取数据
        string result = HttpService.Get(url);

        //保存access_token,用于收货地址获取
        JsonData jd = JsonMapper.ToObject(result);
        access_token = (string)jd["access_token"];

        //获取用户openid
        openid = (string)jd["openid"];
    }
    catch (Exception ex)
    {
        throw new WxPayException(ex.ToString());
    }
}

由於目前在使用中的微信開發案例,整體方案的架構,切割的挺細,而且還搭上樣板引擎,因此為了避免太多無關緊要的程式碼占用篇幅,這裡就暫且將處理 openid 和 acess code 的程式片段摘錄下來。

时间: 2024-12-30 11:19:39

實戰案例 - 微信開發重點摘要之用戶唯一識別碼與網頁存取授權碼 (2)的相关文章

實戰案例 - 微信平台之微信商城重點摘要(1)

只要是牽涉到公眾平台,並需要取得用戶信息的相關操作,不外乎兩大要素:openid 和 access_code.然而,在取得 openid 和 access_code 之前,還有一個很重要的敲門磚,就是 code,筆者稱之為「用戶同意授權碼」,其作用在識別用戶是否同意微信應用發起的「用戶公開訊息調用請求」.也就是說,當微信應用需要獲取用戶的公開資訊時,會先向用戶發起一個授權同意頁面,若用戶點擊同意,就會以網址列傳參的方式給應用端返回 code,若用戶不同意授權,就不帶上 code.而這一段在實作上

實際案例: 獲取臨時票証 (JsApi Ticket)

專案中選用大名鼎鼎的 Senparc 微信開發套件 獲取臨時票證處理常式的程式碼 (GetgVXinInfo.ashx) using Senparc.Weixin; using Senparc.Weixin.MP; using Senparc.Weixin.MP.Entities; using Senparc.Weixin.MP.CommonAPIs; using ShouJia.BO; using ShouJia.Facades; using ShouJia.Debugger; using S

想用Java開發GAE, 如何建構開發環境, Part1: 安裝及設定Google Plugin

在雲端的時代若想要用最小的成本, 運用雲端來兼具快速佈署.自動平衡負載.高可用性, 高可塑性, Google App Engine (GAE)似乎是一個符合經濟及效益的雲端PaaS平台. 站在Google巨人的肩膀上, 架設雲端的諸多系統上的問題似乎都可以不用煩惱, 營運及開發人員只要專心把服務及產品做好就可以水到渠成. 由於這個例子以Eclipse Java EE來開發 GAE上的應用程式, 重點將擺在環境的安裝與設定, 並以一個事先寫好的Google Data的測試程式來做最終的結果驗證.

實際案例: 接口接入驗證 (程式碼)

同樣的 本案例也是採用大名鼎鼎的 Senparc 微信開發套件 廢話不多說,具體程式碼如下 using ShouJia.BO; using ShouJia.Common; using ShouJia.Debugger; using ShouJia.Facades; using ShouJia.Framework; using Senparc.Weixin.MP; using System; using System.Data; using System.Data.Common; using Sy

報表開發常識普及之java報表工具的採購成本

一般情況下,java報表開發工具在一個開發項目中占的比例大概是 10% 左右,最近又有上升的趨勢,在總體統計項目中報表的開發量大的能佔到20%.下面的計算還是以10%為標準,每人月的成本按2.5萬計算. 以一個100萬的軟體開發項目為例,java報表開發工具的工作量佔總工作量的10% ,即開發成本為 10萬元.以2.5萬/人 來計算,這個項目需要用4個人月 來完成報表開發工作.在實際的項目中,這 10 萬元有以下幾種方式分攤: 集成商的代碼積累+程序員按項目定製 即純手工編寫代碼.這裡又分兩種情

PHP微信登錄(網頁授權)之後的獲取用戶的信息

//這部峯代碼是封裝的庫文件,<?php /** * Created by PhpStorm. * User: root * Date: 16-6-23 * Time: 下午3:29 */ class weixinUser{ protected $m_appid;//应用唯一标识,在微信开放平台提交应用审核通过后获得 protected $m_AppSecret;//应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 function __construct($appid, $m_

RTX的api開發實例

RTX的api開發實例 最近接觸了RTX的接口開發部份,RTX其实有很多玩法,除了可以用自帶的客戶端發消息之外還可以用PHP調用API的方式來做一些事情,下邊整理了一下分享給大家 值得提醒的是这些接口都需要设置访问权限不然访问时会提醒“IP受限制” RTX Server强加了SDK访问安性,因此通过http方式访问cgi文件需要在SDKProperty.xml添加远程访问机器的IP地址,如下图所示,允许192.168.10.100通过http方式访问cgi文件 以下为所有接口的清单,你也可以访问

Delphi APP 開發入門(六)Object Pascal 語法初探

Delphi APP 開發入門(六)Object Pascal 語法初探 分享: Share on facebookShare on twitterShare on google_plusone_share 閲讀次數:3442 發表時間:2014/06/10 tags: 行動開發 教學 App Delphi XE6 Android iOS Delphi APP 開發入門(五)GPS 定位功能 << 前情 經過前面五週幾乎每週可以寫出一個簡單App後,大家都可以感受到Delphi強大的開發威力!

Delphi APP 開發入門(八)SQLite資料庫

Delphi APP 開發入門(八)SQLite資料庫 分享: Share on facebookShare on twitterShare on google_plusone_share 閲讀次數:5279 發表時間:2014/06/25 tags: 行動開發 教學 App Delphi XE6 Android iOS SQLite Delphi APP 開發入門(七)通知與雲端推播 << 前情 在撰寫APP程式時,如果遇到資料間無關聯性且資料量不多時,會以像xml檔案去儲存,但一旦遇到關聯