IOS 端APP 使用第三方登陸
目前非常多的app在登陸的時會使用第三方登陸,主要的方式是:qq、微信及微博。現在就這三種方式進行一下解釋
一、 環境配置
三個SDK的環境配置都是比較簡單的,只要按照官方提供的文件進行新增就可以,下面說下在配置過程中我遇到的問題
1、QQ
這裡說一下比較需要注意的一點,在XCode6當中,plist檔案把下面的屬性值去掉了
這個由於qq的環境配置是需要的所以要加上
2、 微博
需要注意的是:在引入靜態庫的時候,不止要加上-objc ,同時也要將.a檔案的路徑新增進去,即:
這樣可以保證程式不再崩潰
二、 URLscheme 配置
URL scheme 需要在qq、微信以及微博的開放平臺上各自申請。
配置到專案當中
三、 專案程式碼執行
AppDelegate當中的配置:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation
{
return [TencentOAuthHandleOpenURL:url]||[WXApi handleOpenURL:url delegate:self]|| [WeiboSDK handleOpenURL:url delegate:
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [TencentOAuthHandleOpenURL:url] || [WXApi handleOpenURL:url delegate:self]|| [WeiboSDKhandleOpenURL:url delegate:self];
}
1、QQ
qq的SDK整合的比較好,在專案當中呼叫比較方便
跳轉qq的APP時,新增程式碼:
self.oauth = [[TencentOAuthalloc]initWithAppId
NSArray*_permissions = [NSArrayarrayWithObjects:
kOPEN_PERMISSION_GET_USER_INFO,
kOPEN_PERMISSION_GET_SIMPLE_USER_INFO,
kOPEN_PERMISSION_ADD_ALBUM,
kOPEN_PERMISSION_ADD_IDOL,
kOPEN_PERMISSION_ADD_ONE_BLOG,
kOPEN_PERMISSION_ADD_PIC_T,
kOPEN_PERMISSION_ADD_SHARE,
kOPEN_PERMISSION_ADD_TOPIC,
kOPEN_PERMISSION_CHECK_PAGE_FANS,
kOPEN_PERMISSION_DEL_IDOL,
kOPEN_PERMISSION_DEL_T,
kOPEN_PERMISSION_GET_FANSLIST,
kOPEN_PERMISSION_GET_IDOLLIST,
kOPEN_PERMISSION_GET_INFO,
kOPEN_PERMISSION_GET_OTHER_INFO,
kOPEN_PERMISSION_GET_REPOST_LIST,
kOPEN_PERMISSION_LIST_ALBUM,
kOPEN_PERMISSION_UPLOAD_PIC,
kOPEN_PERMISSION_GET_VIP_INFO,
kOPEN_PERMISSION_GET_VIP_RICH_INFO,
kOPEN_PERMISSION_GET_INTIMATE_FRIENDS_WEIBO,
kOPEN_PERMISSION_MATCH_NICK_TIPS_WEIBO,
nil];
[self.oauthauthorize:_permissionsinSafari:NO];
添加回調方法- (void)tencentDidLogin;使用者在同意授權後,SDK會回撥這個方法,返回openid,accesstoken資訊,[self.oauthgetUserInfo];可以獲得使用者的資訊,包括暱稱、頭像等
- (void)tencentDidNotLogin:(BOOL)cancelled;使用者取消授權或者是授權失敗時呼叫此方法
ps:其中openid是與qq賬號一一對應的,可以作為唯一標示符進行儲存。
2、微博
在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions;方法中新增
[WeiboSDKenableDebugMode:YES];
[WeiboSDKregisterApp:WeiBoAppKey];
登陸時呼叫方法:
WBAuthorizeRequest *request = [WBAuthorizeRequestrequest];
request.redirectURI =WeiBoRedirectUrl;
[WeiboSDKsendRequest:request];
這樣就可以跳轉到微博app,在使用者同意授權之後,返回當前app,傳回userid及accessToken,根據這些資訊,呼叫微博API的使用者資訊介面
https://api.weibo.com/2/users/show.json?uid=uid&source=source&access_token=access_token
返回資訊包括使用者的name,頭像,userid等資訊
3、微信 微信第三方登陸相對來說比較麻煩 (1)首先初始化kindsOfLog.wxSend = [[SendAuthReqalloc] init];
kindsOfLog.wxSend.scope = @"snsapi_message,snsapi_userinfo,snsapi_friend,snsapi_contact";
kindsOfLog.userInfoDic = [[NSMutableDictionaryalloc] init];
(2)微信跳轉[WXApisendReq:req];
(3)微信授權成功後,返回app,會呼叫- (void) onResp:(BaseResp *)resp;方法
在此方法中可以
if([resp isKindOfClass:[SendAuthRespclass]])
{
SendAuthResp *aresp = (SendAuthResp *)resp;
if (aresp.errCode == 0) {
[BaseProgressHUDshowMsgOnView:self.windowMsg:@"loading..."animated:YES];
NSString *code = aresp.code;
// code = @"123";
NSDictionary *dic = @{@"code":code};
[KindsOfLogInsharedKindsOfLogIn].getDic = dic;
[[NSNotificationCenterdefaultCenter] postNotificationName:WXRELOADINFOMATIONobject:nil];
}
}
可以獲取微信返回的code,根據這個值 呼叫介面https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code
可以獲取微信返回的accesstoken 和 openid(4)為了獲取此授權微訊號的資訊,還需要呼叫
https://api.weixin.qq.com/sns/userinfo?access_token=%@&openid=%@ 介面,
這樣可以獲取微訊號、暱稱等資訊
appdelegate 檔案及整合的類點此下載