中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IOS怎樣實現微信授權登錄功能

發布時間:2021-06-30 13:10:00 來源:億速云 閱讀:1144 作者:小新 欄目:移動開發

這篇文章主要介紹IOS怎樣實現微信授權登錄功能,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

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

1、微信授權的定義

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

2、微信授權的步驟

第三方發起微信授權登錄請求,微信用戶允許授權第三方應用后,微信會拉起應用或重定向到第三方網站,并且帶上授權臨時票據code參數;

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

通過access_token進行接口調用,獲取用戶基本數據資源或幫助用戶實現基本操作。

3、準備工作

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

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

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

3.1、更改plist文件如下

IOS怎樣實現微信授權登錄功能

App Transport Security Setting設置

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

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

這樣就可以允許HTTP傳輸了

4、微信授權第一步:獲取code

我們假設在界面上有一個按鈕,用戶點擊該按鈕,就會發起微信授權操作。

那么代碼如下:

-(IBAction)sendAuthRequest
{ 
 //構造SendAuthReq結構體 
 SendAuthReq* req =[[[SendAuthReq alloc ] init ] autorelease ];
 req.scope = @"snsapi_userinfo" ;
 req.state = WXPacket_State ;//用于在OnResp中判斷是哪個應用向微信發起的授權,這里填寫的會在OnResp里面被微信返回
 //第三方向微信終端發送一個SendAuthReq消息結構
 [WXApi sendReq:req]; 
}

4.1、參數說明

IOS怎樣實現微信授權登錄功能

4.2、拉起微信授權頁面

IOS怎樣實現微信授權登錄功能

4.3、返回結果說明

IOS怎樣實現微信授權登錄功能

5、微信授權第二步:通過code獲取access_token,openid,unionid

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

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

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

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

在AppDelegate.m文件中實現代碼如下:

//微信代理方法
- (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/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返回說明:

IOS怎樣實現微信授權登錄功能

5.2、刷新access_token有效期

IOS怎樣實現微信授權登錄功能

5.2.1、返回說明

IOS怎樣實現微信授權登錄功能

6、微信授權第三步:通過access_token獲取個人信息

6.1、接口說明

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

請求接口

http請求方式: GET

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

參數和返回數據說明

IOS怎樣實現微信授權登錄功能

以上是“IOS怎樣實現微信授權登錄功能”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ios
AI

尚义县| 湖口县| 宜君县| 蒙阴县| 余姚市| 桐城市| 阿尔山市| 肇源县| 宁强县| 兴和县| 乌拉特后旗| 岳普湖县| 遂平县| 全州县| 新蔡县| 固原市| 芜湖市| 黎川县| 大渡口区| 广汉市| 商洛市| 米林县| 华阴市| 辰溪县| 南宁市| 临泉县| 苗栗市| 余庆县| 泰宁县| 库尔勒市| 佛冈县| 永定县| 伊宁县| 渑池县| 布尔津县| 旺苍县| 玛纳斯县| 清丰县| 甘孜县| 巴彦淖尔市| 彭山县|