IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能-創(chuàng)新互聯(lián)

這篇文章主要介紹了IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供剛察網(wǎng)站建設(shè)、剛察做網(wǎng)站、剛察網(wǎng)站設(shè)計(jì)、剛察網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、剛察企業(yè)網(wǎng)站模板建站服務(wù),十載剛察做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

1、微信授權(quán)的定義

微信OAuth3.0授權(quán)登錄讓微信用戶使用微信身份安全登錄第三方應(yīng)用或網(wǎng)站,在微信用戶授權(quán)登錄已接入微信OAuth3.0的第三方應(yīng)用后,第三方可以獲取到用戶的接口調(diào)用憑證(access_token),通過(guò)access_token可以進(jìn)行微信開(kāi)放平臺(tái)授權(quán)關(guān)系接口調(diào)用,從而可實(shí)現(xiàn)獲取微信用戶基本開(kāi)放信息和幫助用戶實(shí)現(xiàn)基礎(chǔ)開(kāi)放功能等。

2、微信授權(quán)的步驟

第三方發(fā)起微信授權(quán)登錄請(qǐng)求,微信用戶允許授權(quán)第三方應(yīng)用后,微信會(huì)拉起應(yīng)用或重定向到第三方網(wǎng)站,并且?guī)鲜跈?quán)臨時(shí)票據(jù)code參數(shù);

通過(guò)code參數(shù)加上AppID和AppSecret等,通過(guò)API換取access_token;

通過(guò)access_token進(jìn)行接口調(diào)用,獲取用戶基本數(shù)據(jù)資源或幫助用戶實(shí)現(xiàn)基本操作。

3、準(zhǔn)備工作

在做微信授權(quán)登錄之前我們需要做一些準(zhǔn)備工作。

具體的直接看微信開(kāi)發(fā)者文檔就可以了,地址如下:iOS接入指南

除了微信開(kāi)發(fā)者文檔中提到的幾點(diǎn),還有幾個(gè)地方需要注意

3.1、更改plist文件如下

IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能

App Transport Security Setting設(shè)置

iOS9中新增App Transport Security(簡(jiǎn)稱(chēng)ATS)特性, 主要使到原來(lái)請(qǐng)求的時(shí)候用到的HTTP,都轉(zhuǎn)向TLS1.2協(xié)議進(jìn)行傳輸。這也意味著所有的HTTP協(xié)議都強(qiáng)制使用了HTTPS協(xié)議進(jìn)行傳輸。需要在Info.plist新增一段用于控制ATS的配置:

<key>NSAppTransportSecurity</key>
<dict>
 <key>NSAllowsArbitraryLoads</key>
 <true/>
</dict>

這樣就可以允許HTTP傳輸了

4、微信授權(quán)第一步:獲取code

我們假設(shè)在界面上有一個(gè)按鈕,用戶點(diǎn)擊該按鈕,就會(huì)發(fā)起微信授權(quán)操作。

那么代碼如下:

-(IBAction)sendAuthRequest
{ 
 //構(gòu)造SendAuthReq結(jié)構(gòu)體 
 SendAuthReq* req =[[[SendAuthReq alloc ] init ] autorelease ];
 req.scope = @"snsapi_userinfo" ;
 req.state = WXPacket_State ;//用于在OnResp中判斷是哪個(gè)應(yīng)用向微信發(fā)起的授權(quán),這里填寫(xiě)的會(huì)在OnResp里面被微信返回
 //第三方向微信終端發(fā)送一個(gè)SendAuthReq消息結(jié)構(gòu)
 [WXApi sendReq:req]; 
}

4.1、參數(shù)說(shuō)明

IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能

4.2、拉起微信授權(quán)頁(yè)面

IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能

4.3、返回結(jié)果說(shuō)明

IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能

5、微信授權(quán)第二步:通過(guò)code獲取access_token,openid,unionid

獲取第一步的code后,請(qǐng)求以下鏈接獲取access_token,openid,unionid:


https://api.weixin.qq.com/sns/oauth3/access_token?

appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

通過(guò)上一步拉起微信授權(quán)頁(yè)面,用戶點(diǎn)擊確認(rèn)登錄,成功之后,就會(huì)調(diào)用微信代理中的回調(diào)函數(shù)OnResp函數(shù),我們可以在該函數(shù)里面獲取access_token,openid,unionid

在AppDelegate.m文件中實(shí)現(xiàn)代碼如下:

//微信代理方法
- (void)onResp:(BaseResp *)resp
{
  SendAuthResp *aresp = (SendAuthResp *)resp;
  if(aresp.errCode== 0 && [aresp.state isEqualToString:WXPacket_State])
  {
   NSString *code = aresp.code;
   [self getWeiXinOpenId:code];
  }
}
//通過(guò)code獲取access_token,openid,unionid
- (void)getWeiXinOpenId:(NSString *)code{
 NSString *url =[NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth3/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code",AppId,AppSerect,code];
 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  NSURL *zoneUrl = [NSURL URLWithString:url];
  NSString *zoneStr = [NSString stringWithContentsOfURL:zoneUrl encoding:NSUTF8StringEncoding error:nil];
  NSData *data = [zoneStr dataUsingEncoding:NSUTF8StringEncoding];
  dispatch_async(dispatch_get_main_queue(), ^{
   if (data){
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    NSString *openID = dic[@"openid"];
    NSString *unionid = dic[@"unionid"];
   }
  });
 });
}

5.1返回說(shuō)明:

IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能

5.2、刷新access_token有效期

IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能

5.2.1、返回說(shuō)明

IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能

6、微信授權(quán)第三步:通過(guò)access_token獲取個(gè)人信息

6.1、接口說(shuō)明

此接口用于獲取用戶個(gè)人信息。開(kāi)發(fā)者可通過(guò)OpenID來(lái)獲取用戶基本信息。特別需要注意的是,如果開(kāi)發(fā)者擁有多個(gè)移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(hào),可通過(guò)獲取用戶基本信息中的unionid來(lái)區(qū)分用戶的性,因?yàn)橹灰峭粋€(gè)微信開(kāi)放平臺(tái)帳號(hào)下的移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(hào),用戶的unionid是的。換句話說(shuō),同一用戶,對(duì)同一個(gè)微信開(kāi)放平臺(tái)下的不同應(yīng)用,unionid是相同的。請(qǐng)注意,在用戶修改微信頭像后,舊的微信頭像URL將會(huì)失效,因此開(kāi)發(fā)者應(yīng)該自己在獲取用戶信息后,將頭像圖片保存下來(lái),避免微信頭像URL失效后的異常情況。

請(qǐng)求接口

http請(qǐng)求方式: GET

請(qǐng)求地址:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

參數(shù)和返回?cái)?shù)據(jù)說(shuō)明


IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

當(dāng)前名稱(chēng):IOS如何實(shí)現(xiàn)微信授權(quán)登錄功能-創(chuàng)新互聯(lián)
本文URL:http://muchs.cn/article40/dspheo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、靜態(tài)網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)公司、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)