iOS 第三方授權(quán)登錄

一脊岳、微信登錄

1.根據(jù)微信Api文檔,導(dǎo)入需要的庫(kù)

2.在AppDelegate初始化

[WXApi registerApp:@"appId" withDescription:@"Description"];

3.在需要授權(quán)登錄的事件中,發(fā)送信息給微信

//構(gòu)造SendAuthReq結(jié)構(gòu)體

if([WXApi isWXAppInstalled]){//判斷是否安裝了客戶端

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

? ? ?req.scope = @"snsapi_userinfo";//一般都填寫snsapi_userinfo

? ? req.state = @"wexchat" ;//自定義

? ? [WXApi sendReq:req];

}

4.發(fā)送成功后剑刑,微信會(huì)在- (void)onResp:(BaseResp *)resp方法中回調(diào)信息

- (void)onResp:(BaseResp *)resp {

? ? ? ? ?if? ([resp isKindOfClass:[SendAuthResp class]]){

? ? ? ? ? ? ? SendAuthResp *authResp = (SendAuthResp *)rest;

? ? ? ? ? ? ? ?if(authResp.errCode==0){//授權(quán)成功

? ? ? ? ? ? ? ? ? ? ? [self login:authResp.code];

? ? ? ? ? ? ? ? ?}

? ? ? ? ? ?}

}

ERR_OK = 0(用戶同意)

ERR_AUTH_DENIED = -4(用戶拒絕授權(quán))

ERR_USER_CANCEL = -2(用戶取消)

5.成功后沉眶,在成功方法中根據(jù)返回的code獲取Token和openID

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"text/html", nil];

NSString *refreshUrlStr = [NSString stringWithFormat:@"%@/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code",WX_BASE_URL, wxAppId, wxSecret,authResp.code];

[manager GET:refreshUrlStr parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

? ? ?NSLog(@"請(qǐng)求reAccess的response = %@", responseObject);

? ? NSDictionary *accessDict = [NSDictionary dictionaryWithDictionary:responseObject];

? ?NSString *accessToken = [accessDict objectForKey:WX_ACCESS_TOKEN];

? ?NSString *openID = [accessDict objectForKey:WX_OPEN_ID];

? ? NSString *refreshToken = [accessDict objectForKey:WX_REFRESH_TOKEN];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

? ? ? ?NSLog(@"用refresh_token來(lái)更新accessToken時(shí)出錯(cuò) = %@", error);

}];

6.最后根據(jù)Token 和 openId獲取到用戶的信息

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"text/html", nil];

NSString *url = [NSString stringWithFormat:@"%@/userinfo?access_token=%@&openid=%@",WX_BASE_URL,access_token,openid];

[manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSLog(@"請(qǐng)求用戶信息 = %@", responseObject);

NSDictionary *refreshDict = [NSDictionary dictionaryWithDictionary:responseObject];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"獲取用戶信息失敗 = %@", error);

}];


二、QQ登錄(http://wiki.connect.qq.com/sdk下載)

1.根據(jù)文檔導(dǎo)入庫(kù)填渠,如果是基礎(chǔ)功能弦聂,只需導(dǎo)入基礎(chǔ)包

identifier:tencentopenapi ? ? ? url Schemes:tencent+appid

到這里只是打開qq網(wǎng)頁(yè)登錄界面,如果要打開跳轉(zhuǎn)到客戶端氛什,必須在info添加

<key>LSApplicationQueriesSchemes</key>

?<array>

? <string>mqqapi</string>

? <string>mqq</string>

?<string>mqqOpensdkSSoLogin</string>

? <string>mqqconnect</string>

? <string>mqqopensdkdataline<string>

? <string>mqqopensdkgrouptribeshare</string>

? <string>mqqopensdkfriend</string>

? <string>mqqopensdkapi</string>

? <string>mqqopensdkapiV2</string>

? <string>mqqopensdkapiV3</string>

? <string>mqzoneopensdk</string>

? <string>mqqopensdkapiV3</string>

? <string>mqqopensdkapiV3</string>

? <string>mqzone</string>

? <string>mqzonev2</string>

? <string>mqzoneshare</string>

? <string>wtloginqzone</string>

? <string>mqzonewx</string>

? <string>mqzoneopensdkapiV2</string>

? <string>mqzoneopensdkapi19</string>

? <string>mqzoneopensdkapi</string>?

? <string>mqzoneopensdk</string>

?</array>


2.在需要授權(quán)登錄的事件中莺葫,發(fā)送信息給Tencent

if([TencentOAuth iphoneQQInstalled]){//判斷是否安裝了客戶端

? ? ?TencentOAuth *tencentOAuth=? [[TencentOAuth alloc]initWithAppId:qqAppId andDelegate:self]; //delegate必須實(shí)現(xiàn)

? ? NSArray *permissions= @[@"get_user_info",@"get_simple_userinfo",@"add_t"];

? ?[tencentOAuth authorize:permissions localAppId:qqAppId inSafari:NO];

}

實(shí)現(xiàn)TencentSessionDelegate

//授權(quán)成功

-(void)tencentDidLogin{

? ?if (tencentOAuth.accessToken.length!=0)

? ?{

//? 記錄登錄用戶的OpenID、Token以及過(guò)期時(shí)間 ??

? ?kNSLog(@"Tencent用戶授權(quán)成功,Token=%@,openId=%@",tencentOAuth.accessToken,tencentOAuth.openId);

}

else

? {

? ?kNSLog(@"Tencent授權(quán)失敗");

}

}

//非網(wǎng)絡(luò)錯(cuò)誤導(dǎo)致登錄失斍姑肌:

-(void)tencentDidNotLogin:(BOOL)cancelled{

? ?if (cancelled){

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

? }else{

? ? ?NSLog(@"Tencent用戶登錄失敗");

? }

}

// 網(wǎng)絡(luò)錯(cuò)誤導(dǎo)致登錄失斵嗝省:

-(void)tencentDidNotNetWork

{

? ?NSLog(@"tencentDidNotNetWork");

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贸铜,隨后出現(xiàn)的幾起案子堡纬,更是在濱河造成了極大的恐慌聂受,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烤镐,死亡現(xiàn)場(chǎng)離奇詭異蛋济,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)炮叶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門碗旅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人悴灵,你說(shuō)我怎么就攤上這事扛芽。” “怎么了积瞒?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵川尖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我茫孔,道長(zhǎng)叮喳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任缰贝,我火速辦了婚禮馍悟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剩晴。我一直安慰自己锣咒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布赞弥。 她就那樣靜靜地躺著毅整,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绽左。 梳的紋絲不亂的頭發(fā)上悼嫉,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音拼窥,去河邊找鬼戏蔑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鲁纠,可吹牛的內(nèi)容都是我干的总棵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼改含,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼彻舰!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刃唤,失蹤者是張志新(化名)和其女友劉穎隔心,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尚胞,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硬霍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了笼裳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唯卖。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖躬柬,靈堂內(nèi)的尸體忽然破棺而出拜轨,到底是詐尸還是另有隱情,我是刑警寧澤允青,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布橄碾,位于F島的核電站,受9級(jí)特大地震影響颠锉,放射性物質(zhì)發(fā)生泄漏法牲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一琼掠、第九天 我趴在偏房一處隱蔽的房頂上張望拒垃。 院中可真熱鬧,春花似錦瓷蛙、人聲如沸悼瓮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)横堡。三九已至,卻和暖如春姥宝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恐疲。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工腊满, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人培己。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓碳蛋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親省咨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肃弟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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