欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年03月20日 11:49:50   作者:wakice  
微信是一個在開發(fā)中經(jīng)常會使用到的平臺,比如微信登錄、授權(quán)、支付、分享。今天我們來看看如何在自己的應用里面集成微信授權(quán),需要的朋友參考下吧

 微信是一個在開發(fā)中經(jīng)常會使用到的平臺,比如微信登錄、授權(quán)、支付、分享。今天我們來看看如何在自己的應用里面集成微信授權(quán)。

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

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

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

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

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

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

3、準備工作

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

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

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

3.1、更改plist文件如下

image

App Transport Security Setting設置

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

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

這樣就可以允許HTTP傳輸了

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

我們假設在界面上有一個按鈕,用戶點擊該按鈕,就會發(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中判斷是哪個應用向微信發(fā)起的授權(quán),這里填寫的會在OnResp里面被微信返回
 //第三方向微信終端發(fā)送一個SendAuthReq消息結(jié)構(gòu)
 [WXApi sendReq:req]; 
}

4.1、參數(shù)說明

image

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

image

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

image

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

獲取第一步的code后,請求以下鏈接獲取access_token,openid,unionid:

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

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

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

在AppDelegate.m文件中實現(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];
  }
}
//通過code獲取access_token,openid,unionid
- (void)getWeiXinOpenId:(NSString *)code{
 NSString *url =[NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/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返回說明:

image

5.2、刷新access_token有效期

image

5.2.1、返回說明

image

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

6.1、接口說明

此接口用于獲取用戶個人信息。開發(fā)者可通過OpenID來獲取用戶基本信息。特別需要注意的是,如果開發(fā)者擁有多個移動應用、網(wǎng)站應用和公眾帳號,可通過獲取用戶基本信息中的unionid來區(qū)分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應用、網(wǎng)站應用和公眾帳號,用戶的unionid是唯一的。換句話說,同一用戶,對同一個微信開放平臺下的不同應用,unionid是相同的。請注意,在用戶修改微信頭像后,舊的微信頭像URL將會失效,因此開發(fā)者應該自己在獲取用戶信息后,將頭像圖片保存下來,避免微信頭像URL失效后的異常情況。

請求接口

http請求方式: GET

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

參數(shù)和返回數(shù)據(jù)說明

image

以上所述是小編給大家介紹的IOS實現(xiàn)微信授權(quán)登錄功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • iOS實現(xiàn)微信朋友圈與搖一搖功能

    iOS實現(xiàn)微信朋友圈與搖一搖功能

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)微信朋友圈與搖一搖功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 談談XCode9的新變化

    談談XCode9的新變化

    這篇文章主要介紹了談談XCode9的新變化,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • iOS App之間的通信 local socket

    iOS App之間的通信 local socket

    這篇文章主要介紹了iOS App之間的通信 local socket的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS NSCache和NSUrlCache緩存類實現(xiàn)示例詳解

    iOS NSCache和NSUrlCache緩存類實現(xiàn)示例詳解

    這篇文章主要為大家介紹了iOS NSCache和NSUrlCache緩存類實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • iOS錄屏和截屏監(jiān)聽的實現(xiàn)代碼

    iOS錄屏和截屏監(jiān)聽的實現(xiàn)代碼

    本篇文章主要介紹了iOS錄屏和截屏監(jiān)聽的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • iOS支付寶、微信、銀聯(lián)支付集成封裝調(diào)用(下)

    iOS支付寶、微信、銀聯(lián)支付集成封裝調(diào)用(下)

    本篇文章通過代碼實例給大家講述了iOS支付寶、微信、銀聯(lián)支付集成封裝調(diào)用,對此有需要的朋友可以測試參考下。
    2018-04-04
  • 為textView添加語音輸入功能的實例代碼(集成訊飛語音識別)

    為textView添加語音輸入功能的實例代碼(集成訊飛語音識別)

    下面小編就為大家分享一篇為textView添加語音輸入功能的實例代碼(集成訊飛語音識別),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • IOS應用內(nèi)跳轉(zhuǎn)系統(tǒng)設置相關(guān)界面的方法

    IOS應用內(nèi)跳轉(zhuǎn)系統(tǒng)設置相關(guān)界面的方法

    在iOS開發(fā)中,有時會有跳轉(zhuǎn)系統(tǒng)設置界面的需求,例如提示用戶打開藍牙或者WIFI,提醒用戶打開推送或者位置權(quán)限等,接下來通過本文給大家介紹IOS應用內(nèi)跳轉(zhuǎn)系統(tǒng)設置相關(guān)界面的方法,喜歡的朋友參考下
    2016-02-02
  • IOS React等Title不顯示問題解決辦法

    IOS React等Title不顯示問題解決辦法

    這篇文章主要介紹了IOS React等Title不顯示問題解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • iOS通過逆向理解Block的內(nèi)存模型

    iOS通過逆向理解Block的內(nèi)存模型

    自從對 iOS 的逆向初窺門徑后,我也經(jīng)常通過它來分析一些比較大的應用,參考一下這些應用中某些功能的實現(xiàn)。這個探索的過程樂趣多多,不僅能滿足自己對未知的好奇心,還經(jīng)常能發(fā)現(xiàn)一些意外的驚喜。這篇文章主要介紹了iOS通過逆向如何深入理解Block內(nèi)存模型的相關(guān)資料。
    2017-01-01

最新評論