讀古今文學網 > 微信公眾平台開發:從零基礎到ThinkPHP5高性能框架實踐 > 22.1.1 微信登錄 >

22.1.1 微信登錄

移動應用微信登錄是基於OAuth2.0協議標準構建的微信OAuth2.0授權登錄系統。

進行微信OAuth2.0授權登錄接入之前,先在微信開放平台註冊開發者賬號,並擁有一個已審核通過的移動應用,獲得相應的AppID和AppSecret,申請微信登錄且通過審核後,可開始接入流程。

目前移動應用上微信登錄只提供原生的登錄方式,需要用戶安裝微信客戶端才能配合使用。

微信登錄的流程如下。

開發者需要配合使用微信開放平台提供的SDK進行授權登錄請求接入。正確接入SDK並擁有相關授權域權限後,開發者移動應用會在終端本地拉起微信應用進行授權登錄,微信用戶確認後,微信將拉起開發者移動應用,並帶上授權臨時票據(Code)。

iOS平台應用授權登錄接入代碼示例如下。


-(void)sendAuthRequest
{ 
    // 構造SendAuthReq結構體 
    SendAuthReq* req =[[[SendAuthReq alloc ] init ] autorelease ];
    req.scope = @"snsapi_userinfo" ;
    req.state = @"123" ;
    // 第三方向微信終端發送一個SendAuthReq消息結構
    [WXApi sendReq:req]; 
}
  

Android平台應用授權登錄接入代碼示例如下。


{ 
    // send OAuth request 
    Final SendAuth.Req req = new SendAuth.Req;
    req.scope = "snsapi_userinfo";
    req.state = "wechat_sdk_demo_test";
    api.sendReq(req);
}
  

上述數據的參數說明如表22-1所示。

表22-1 移動應用微信登錄參數說明

微信客戶端會被拉起,跳轉至微信登錄授權界面,如圖22-2所示。

圖22-2 移動應用微信登錄

當用戶點擊「確認登錄」按鈕時,SDK通過SendAuth的Resp返回ErrCode和code等參數給調用方。相關參數的說明如表22-2所示。

表22-2 微信登錄返回參數

獲取第一步的code後,請求接口獲取access_token,接口地址如下。


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

上述數據的參數說明如表22-3所示。

表22-3 獲取access_token接口的參數說明

正確創建時,返回的數據示例如下。


{
    "access_token": "OezXcEiiBSKSxW0eoylIeOZ0dfxvb93UyrFdwznvwUv3JkVNVV1yFvQQa3IfuyMi4i
    ZGDsAfe81sCaUXxyKrI-5XgCvhAS02eAC4MF2fJFl80Y9s-0h1EsuBmIVKgu0GnKhxCQ0M8G-gkQAJpzLzmQ",
    "expires_in": 7200,
    "refresh_token": "OezXcEiiBSKSxW0eoylIeOZ0dfxvb93UyrFdwznvwUv3JkVNVV1yFvQQa3IfuyMiH
    7dCabGFyMRtZHnHPHuEK78cf1eISYJ4y453T8pDa2tFAIJu8bFeLMBpeFSv9dgnGrK-ZfRxHzhq7IW4qevEMQ",
    "openid": "oH9d2v7NmDhsFzICG63UPSIOgUcY",
    "scope": "snsapi_userinfo",
    "unionid": "o4wcnwx0BVC4F_hSl5qCd5rC4Jps"
}
  

上述數據的參數說明如表22-4所示。

表22-4 獲取access_token接口返回參數說明

最後可以通過Access Token和OpenID獲取用戶的基本信息。接口地址如下。


https:// api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
  

上述數據的參數說明如表22-5所示。

表22-5 獲取用戶基本信息接口的參數說明

正確創建時,返回的數據示例如下。


{
    "openid": "oH9d2v7NmDhsFzICG63UPSIOgUcY",
    "nickname": "方倍",
    "sex": 0,
    "language": "zh_CN",
    "city": "",
    "province": "",
    "country": "CN",
    "headimgurl": "http:// wx.qlogo.cn/mmopen/pburdzLK7PUTcFw3ozK52Gravkznno51DSjnq
    nzsG6WzJLUOtadGBYYSVqh5YDicdawxrD6hHoR96OcyyDWAEgA/0",
    "privilege": ,
    "unionid": "o4wcnwx0BVC4F_hSl5qCd5rC4Jps"
}
  

上述數據的參數說明如表22-6所示。

表22-6 獲取用戶基本信息接口返回參數說明

至此,移動應用就完成了微信用戶的登錄過程,並獲得了用戶的個人基本信息。