微信三方登錄的兩種方式

最近在些項(xiàng)目的時(shí)候需要引入微信登錄,當(dāng)然了,微信登錄大家都不陌生挨下,也都會做熔恢。

因?yàn)橹耙恢庇玫挠衙酥械娜降卿?友盟還是很方便的。省去了很多步驟臭笆,但是友盟也有壞處叙淌,假如微信登錄更新了,友盟這邊卻沒有更新愁铺,那就坑爹了鹰霍,下面分別說一下這兩種方式。

首先需要去微信開發(fā)平臺:https://open.weixin.qq.com茵乱,注冊應(yīng)用并得到茂洒,AppID和AppSecret,過程就不說了瓶竭。然后下載并導(dǎo)入相關(guān)sdk督勺。

第一種就是集成友盟,

一在验、導(dǎo)入SDK

第三方登錄這個(gè)模塊需要用到common和share文件夾里面的內(nèi)容玷氏,直接拖入項(xiàng)目即可,然后需要加入一些依賴庫

"SystemConfiguration.framework"

"Security.framework"

"CoreTelephony.framework"

"CoreGraphics.Framework"

"libiconv.tbd"

"libsqlite3.tbd"

"libstdc++.tbd"

"libz.tbd"

根據(jù)接入的第三方不同 可能會有所增減

二腋舌、在plist文件里配置白名單盏触,根據(jù)需要添加。


并在TARGETS -> info -> URL Types里做相應(yīng)配置


三块饺、代碼初始化

在AppDelegate中 導(dǎo)入

#import<UMCommon/UMCommon.h>

#import<UMShare/UMShare.h>

并在didFinishLaunchingWithOptions方法用 初始化

[UMConfigure initWithAppkey:@"your Umeng appKey"channel:@"App Store"];

//連續(xù)添加不同的平臺 此處以微信為例

[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"微信平臺的appKey"appSecret:@"微信平臺的SecretKey"redirectURL:@"http://www.baidu.com"];

四赞辩、調(diào)起SDK

在需要第三方登錄的操作方法中加入代碼

[[UMSocialManager defaultManager] getUserInfoWithPlatform:platformType currentViewController:selfcompletion:^(idresult,NSError*error){

if(error) {NSLog(@"%@",error); ? ? ??

?}else{? ? ? ?

?? ? UMSocialUserInfoResponse *resp = result;

// 授權(quán)信息

NSLog(@"Wechat uid: %@", resp.uid);

NSLog(@"Wechat openid: %@", resp.openid);

NSLog(@"Wechat unionid: %@", resp.unionId);

NSLog(@"Wechat accessToken: %@", resp.accessToken);

NSLog(@"Wechat refreshToken: %@", resp.refreshToken);

NSLog(@"Wechat expiration: %@", resp.expiration);

// 用戶信息

NSLog(@"Wechat name: %@", resp.name);

NSLog(@"Wechat iconurl: %@", resp.iconurl);

NSLog(@"Wechat gender: %@", resp.unionGender);

// 第三方平臺SDK源數(shù)據(jù)NSLog(@"Wechat originalResponse: %@", resp.originalResponse);? ??

? ? }? ? }];

五、監(jiān)聽回調(diào)

在AppDelegate中 添加監(jiān)聽回調(diào)方法?

- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options

{

BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url options:options];

if(!result) {// 其他如支付等SDK的回調(diào)}

return result;

}

- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{

BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];

if(!result) {// 其他如支付等SDK的回調(diào)}

return result;

}

- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url{

BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];

if(!result) {// 其他如支付等SDK的回調(diào)}

return result;

}

第二種就是集成微信登錄

首先也是在appdelegate里面導(dǎo)入頭文件授艰,然后注冊appkey辨嗽。

第一步:請求code

原生應(yīng)用使用微信SDK授權(quán)登錄

- (void)sendWXAuthReq{if([WXApi isWXAppInstalled]){//判斷用戶是否已安裝微信

AppSendAuthReq *req = [[SendAuthReq alloc] init];

?req.state = @"wx_oauth_authorization_state";//用于保持請求和回調(diào)的狀態(tài),授權(quán)請求或原樣帶回

req.scope = @"snsapi_userinfo";//授權(quán)作用域:獲取用戶個(gè)人信息

[WXApi sendReq:req];//發(fā)起微信授權(quán)請求}

else{//提示:未安裝微信應(yīng)用或版本過低}

}

在回調(diào)函數(shù)中獲取code

- (void)onResp:(id)resp{

if([resp isKindOfClass:[SendAuthRespclass]]){//判斷是否為授權(quán)登錄類

SendAuthResp *req = (SendAuthResp *)resp;

if([req.state isEqualToString:@"wx_oauth_authorization_state"])

{

//微信授權(quán)成功

req.code//獲得code} ??

?}}

第二步:通過code請求access_token

獲取到第一步的code之后淮腾,GET請求以下鏈接獲取access_token

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

返回說明:

{"access_token":"ACCESS_TOKEN",//接口調(diào)用憑證

"expires_in":7200,//access_token接口調(diào)用憑證超時(shí)時(shí)間糟需,單位(秒)

"refresh_token":"REFRESH_TOKEN",//用戶刷新access_token

"openid":"OPENID",//授權(quán)用戶唯一標(biāo)識

"scope":"SCOPE",//用戶授權(quán)的作用域屉佳,使用逗號(,)分隔

"unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"http://當(dāng)且僅當(dāng)該移動(dòng)應(yīng)用已獲得該用戶的userinfo授權(quán)時(shí),才會出現(xiàn)該字段}

第三步:通過access_token調(diào)用接口

獲取到第二步的access_token和openid后洲押,GET請求以下鏈接獲取用戶個(gè)人信息

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

返回說明:

{"openid":"OPENID",//用戶的標(biāo)識武花,對當(dāng)前開發(fā)者帳號唯一

"nickname":"NICKNAME",//用戶昵稱

"sex":1,//用戶性別,1為男性杈帐,2為女性

"province":"PROVINCE",//用戶個(gè)人資料填寫的省份

"city":"CITY",//用戶個(gè)人資料填寫的城市

"country":"COUNTRY",//國家体箕,如中國為CN

"headimgurl":"http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",//用戶頭像,最后一個(gè)數(shù)值代表正方形頭像大刑敉(有0累铅、46、64站叼、96娃兽、132數(shù)值可選,0代表640*640正方形頭像)大年,用戶沒有頭像時(shí)該項(xiàng)為空

"unionid":" o6_bmasdasdsad6_2sgVt7hMZOPfL"http://用戶統(tǒng)一標(biāo)識换薄。針對一個(gè)微信開放平臺帳號下的應(yīng)用玉雾,同一用戶的unionid是唯一的翔试。

}

到這里兩種方式就介紹完了,可以根據(jù)自己的需求選擇一種合適的复旬。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垦缅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子驹碍,更是在濱河造成了極大的恐慌壁涎,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件志秃,死亡現(xiàn)場離奇詭異怔球,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)浮还,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門竟坛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钧舌,你說我怎么就攤上這事担汤。” “怎么了洼冻?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵崭歧,是天一觀的道長。 經(jīng)常有香客問我撞牢,道長率碾,這世上最難降的妖魔是什么叔营? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮所宰,結(jié)果婚禮上审编,老公的妹妹穿的比我還像新娘。我一直安慰自己歧匈,他們只是感情好垒酬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著件炉,像睡著了一般勘究。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斟冕,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天口糕,我揣著相機(jī)與錄音,去河邊找鬼磕蛇。 笑死景描,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秀撇。 我是一名探鬼主播超棺,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼呵燕!你這毒婦竟也來了棠绘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤再扭,失蹤者是張志新(化名)和其女友劉穎氧苍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泛范,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡让虐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了罢荡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赡突。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柠傍,靈堂內(nèi)的尸體忽然破棺而出麸俘,到底是詐尸還是另有隱情,我是刑警寧澤惧笛,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布从媚,位于F島的核電站,受9級特大地震影響患整,放射性物質(zhì)發(fā)生泄漏拜效。R本人自食惡果不足惜喷众,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望紧憾。 院中可真熱鬧到千,春花似錦、人聲如沸赴穗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽般眉。三九已至了赵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甸赃,已是汗流浹背柿汛。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留埠对,地道東北人络断。 一個(gè)月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像项玛,于是被迫代替她去往敵國和親貌笨。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容