iOS微信&QQ第三方登錄

微信第三方登錄

一阱高、注冊(cè)微信開放平臺(tái)開發(fā)賬號(hào)

1. 微信開放平臺(tái)網(wǎng)站:微信開放平臺(tái)

2. 注冊(cè)開發(fā)者賬號(hào),按步驟填寫相關(guān)信息

3.?在管理中心創(chuàng)建移動(dòng)應(yīng)用钓觉,填寫相關(guān)信息离赫,信息完整填寫完成后提交審核,登錄功能申請(qǐng)要每年繳納300元費(fèi)用呈础,

審核通過后狀態(tài)如下圖

如需使用公眾號(hào)獲取用戶openID進(jìn)行微信推廣發(fā)送消息舆驶,需綁定公眾號(hào)。綁定后用公眾號(hào)開發(fā)而钞,可以通過openID獲取統(tǒng)一unionid

獲取unionid接口 get請(qǐng)求沙廉,通過后臺(tái)去獲取unionid,前端只返回code給后臺(tái)

https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx56789b6e2f5c7e5a&secret=0d0a1a6d9b8ab9fa8d7a05f87678e56b&code=071DHMXQ0quIJ82kRgWQ0jCEXQ0DHMX7&grant_type=authorization_code

返回?cái)?shù)據(jù)

{"access_token":"5_meXCqPOcoSonfFUi2FZFD4ds9c5OFyqLF_OT9FdffT7xx9krOSmmsqRUh0KIHtremAOtntD5mRkBjLFCG3j34Y7fC6qWuQUqnkPjak6iS5c","expires_in":7200,"refresh_token":"5_mWWzmal5Z23PfansrtScuVTNZASzeDUeOlDLmvyHtfVzqYGVjjUUVAUhU1HpxYIXR9O1xPSRtapElhb4-TS3WcJogVjjtrebpnm2VzXek6Y","openid":"oLo5k1EhHGAC3Mcm9m-eX6WuUacY","scope":"snsapi_userinfo","unionid":"ooGK5ww0RTiVicivaIyvXsOw7ba4"}

二臼节、微信第三方登錄工程配置

1. 通過Cocoapods集成微信登錄SDK

pod 'WechatOpenSDK' ?通過Cocoapods 將微信登錄最新版本集成到工程撬陵,這樣也利于后續(xù)的版本管理珊皿。

2. 微信登錄相關(guān)配置

配置URL schema

添加微信平臺(tái)Scheme白名單

wechat,

weixin

三、微信登錄詳細(xì)代碼

#import "AppDelegate.h"

#import <WXApi.h>

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

? [WXApi registerApp:@"wx3e655454f7cfbb0b0"];?

? return YES;

}

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

{

? ? return [WXApi handleOpenURL:url delegate:self];

}

- (void)onResp:(BaseResp *)resp

{

? ? switch (resp.errCode)

? ? {

? ? ? ? case 0:

? ? ? ? {

? ? ? ? ? ? // 用戶同意 獲取code

? ? ? ? ? ? SendAuthResp *yuResp = (SendAuthResp *)resp;

? ? ? ? ? ? NSLog(@"code == %@",yuResp.code);

? ? ? ? }

? ? ? ? ? ? break;


? ? ? ? case -4://用戶拒絕授權(quán)

? ? ? ? {

? ? ? ? ? ? NSLog(@"您拒絕授權(quán)微信登錄");

? ? ? ? }

? ? ? ? ? ? break;


? ? ? ? case -2://用戶取消

? ? ? ? {

? ? ? ? ? ? NSLog(@"您取消了授權(quán)微信登錄");

? ? ? ? }

? ? ? ? ? ? break;

? ? }

}


#import "ViewController.h"

#import <WXApi.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

? ? [super viewDidLoad];


? ? UIButton *weChatLoginBtn = [[UIButton alloc]initWithFrame:CGRectMake(50, 100, 80, 44)];

? ? weChatLoginBtn.backgroundColor = [UIColor blackColor];

? ? [weChatLoginBtn setTitle:@"QQ Login" forState:UIControlStateNormal];

? ? [weChatLoginBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

? ? [weChatLoginBtn addTarget:self action:@selector(weChatLoginBtnAction) forControlEvents:UIControlEventTouchUpInside];

? ? [self.view addSubview:weChatLoginBtn];

}

- (void)weChatLoginBtnAction

{

? ? if ([WXApi isWXAppInstalled])

? ? {

? ? ? ? SendAuthReq *weChatReq = [[SendAuthReq alloc]init];

? ? ? ? weChatReq.scope = @"snsapi_userinfo";

? ? ? ? weChatReq.openID = @"wx3e655454f7cfbb0b0";

? ? ? ? weChatReq.state = @"1245";

? ? ? ? [WXApi sendReq:weChatReq];

? ? }

? ? else

? ? {

? ? ? ? NSLog(@"您未安裝微信APP巨税,請(qǐng)先安裝");

? ? }

}

@end


QQ第三方登錄

一蟋定、注冊(cè)騰訊開放平臺(tái)開發(fā)賬號(hào)

1. 騰訊開放平臺(tái)網(wǎng)站:騰訊開放平臺(tái)

2. 注冊(cè)開發(fā)者賬號(hào),按步驟填寫相關(guān)信息

使用QQ號(hào)登錄

選擇進(jìn)入管理中心草添,注冊(cè)類型分個(gè)人驶兜、公司。個(gè)人需要上傳身份證照片远寸,公司需要上傳公司營(yíng)業(yè)執(zhí)照照片抄淑。

進(jìn)入注冊(cè)界面按步驟填寫相關(guān)信息

3. 在管理中心選擇iOS欄創(chuàng)建應(yīng)用,填寫相關(guān)信息

點(diǎn)擊創(chuàng)建應(yīng)用驰后,按步驟填寫相關(guān)信息肆资,填寫完成后提交審核

配置APP自定義 URL schema 方法,格式范例:783euu://灶芝,通過配置好的URL schema可以通過其他APP或者網(wǎng)頁中訪問783euu://此地址就可以直接跳轉(zhuǎn)到自己的APP

可以通過方法打開相應(yīng)的APP

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"783euu://"]];

二迅耘、QQ第三方登錄工程配置

1. 準(zhǔn)備工作

1.1 確認(rèn)騰訊開放平臺(tái)審核是否通過,通過狀態(tài)顯示已獲取QQ登錄能力

1.2?相同開發(fā)者賬號(hào)下的不同appid應(yīng)用打通返回相同UnionID

各客戶端APP ID是不一樣的监署,所以返回的appid是不一樣的,所以需要向騰訊申請(qǐng)統(tǒng)一各APP ID返回相同UnionID纽哥;先下載申請(qǐng)表格钠乏,表格下載和說明地址:申請(qǐng)流程&表格下載

獲取unionid接口 get請(qǐng)求,通過后臺(tái)去獲取unionid春塌,前端只返回access_token給后臺(tái)

https://graph.qq.com/oauth2.0/me?access_token=9898CA1C13CBE60A7CDFB2CEF042FC5E&unionid=1

返回?cái)?shù)據(jù)

callback( {"client_id":"1106628010","openid":"80A3310DAA0263AD46E0A45389B820B2","unionid":"UID_B83B6F5E1FD2F039923A52D5D367F3E3"} );

2. 通過Cocoapods集成QQ登錄SDK

pod 'TencentOpenAPI-Unofficial', '~> 3.3.0' ?通過Cocoapods將QQ登錄最新版本集成到工程晓避,這樣也利于后續(xù)的版本管理。

3. QQ登錄相關(guān)配置

配置URL schema

添加QQ平臺(tái)Scheme白名單

LSApplicationQueriesSchemes

mqqOpensdkSSoLogin,

mqqopensdkapiV2,

mqqopensdkapiV3,

wtloginmqq2,

mqq,

mqqapi

三只壳、QQ登錄詳細(xì)代碼

AppDelegate配置代碼

#import "ViewController.h"

#import <TencentOpenAPI/QQApiInterface.h>

#import <TencentOpenAPI/TencentOAuth.h>

@interface ViewController ()

@property (nonatomic,strong) TencentOAuth *tencentOAuth;

@end

@implementation ViewController

- (void)viewDidLoad {

? ? [super viewDidLoad];


? ? UIButton *qqLoginBtn = [[UIButton alloc]initWithFrame:CGRectMake(50, 100, 80, 44)];

? ? qqLoginBtn.backgroundColor = [UIColor blackColor];

? ? [qqLoginBtn setTitle:@"QQ Login" forState:UIControlStateNormal];

? ? [qqLoginBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

? ? [qqLoginBtn addTarget:self action:@selector(qqLoginBtnAction) forControlEvents:UIControlEventTouchUpInside];

? ?[self.view addSubview:qqLoginBtn];

}

- (void)qqLoginBtnAction

{

? ? self.tencentOAuth = [[TencentOAuth alloc]initWithAppId:@"1108888010" andDelegate:self];

? ? NSMutableArray *permission = [@[] mutableCopy];

? ? permission = [NSMutableArray arrayWithObjects:@"get_user_info",@"get_simple_userinfo",nil];

? ? [self.tencentOAuth authorize:permission inSafari:NO];

}

#pragma mark --------- qq登錄狀態(tài)回調(diào)? TencentSessionDelegate------

- (void)tencentDidLogin

{

? ? if (!_tencentOAuth.accessToken)

? ? {

? ? ? ? NSLog(@"%@ == %@",_tencentOAuth.accessToken,_tencentOAuth.openId);

? ? ? ? [self.tencentOAuth getUserInfo];

? ? }

? ? else

? ? {

? ? ? ? NSLog(@"登錄失斍喂啊!沒有獲取到accessToken");

? ? }

}

/**

* 登錄失敗后的回調(diào)

*/

- (void)tencentDidNotLogin:(BOOL)cancelled

{

? ? if (cancelled)

? ? {

? ? ? ? NSLog(@"用戶取消登錄");

? ? }

? ? else

? ? {

? ? ? ? NSLog(@"登錄失敗");

? ? }

}

/**

* 登錄時(shí)網(wǎng)絡(luò)有問題的回調(diào)

*/

- (void)tencentDidNotNetWork

{

? ? NSLog(@"沒有網(wǎng)絡(luò)吼句,無法登錄");

}

/**

* 取得用戶信息的回調(diào)

*/

- (void)getUserInfoResponse:(APIResponse *)response

{

? ? NSLog(@"%@",response.jsonResponse);

}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锅必,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子惕艳,更是在濱河造成了極大的恐慌搞隐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件远搪,死亡現(xiàn)場(chǎng)離奇詭異劣纲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谁鳍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門癞季,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劫瞳,“玉大人,你說我怎么就攤上這事绷柒≈居冢” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵辉巡,是天一觀的道長(zhǎng)恨憎。 經(jīng)常有香客問我,道長(zhǎng)郊楣,這世上最難降的妖魔是什么憔恳? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮净蚤,結(jié)果婚禮上钥组,老公的妹妹穿的比我還像新娘。我一直安慰自己今瀑,他們只是感情好程梦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著橘荠,像睡著了一般屿附。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哥童,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天挺份,我揣著相機(jī)與錄音,去河邊找鬼贮懈。 笑死匀泊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朵你。 我是一名探鬼主播各聘,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼抡医!你這毒婦竟也來了躲因?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤魂拦,失蹤者是張志新(化名)和其女友劉穎毛仪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芯勘,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡箱靴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了荷愕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衡怀。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棍矛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抛杨,到底是詐尸還是另有隱情够委,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布怖现,位于F島的核電站茁帽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏屈嗤。R本人自食惡果不足惜潘拨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饶号。 院中可真熱鬧铁追,春花似錦、人聲如沸茫船。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽算谈。三九已至涩禀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間然眼,已是汗流浹背埋泵。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罪治,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓礁蔗,卻偏偏與公主長(zhǎng)得像觉义,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浴井,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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