1. 程式人生 > >IOS 端APP 使用第三方登陸

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:

self];

}

- (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

:QQAppKeyandDelegate:self];

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會回撥這個方法,返回openidaccesstoken資訊,[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,傳回useridaccessToken,根據這些資訊,呼叫微博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 檔案及整合的類點此下載