iOS 實現第三方登錄

所謂的第三方登錄,就是利用用戶在第三方平臺上已有的賬號來快速完成自己應用的登錄或者注冊的功能。而這里的第三方平臺,一般是已經有大量用戶的平臺,如國內的新浪微博、QQ空間,微信,外國的Facebook、twitter等等。第三方登錄不是一個具體的接口,而是一種思想或者一套步驟。這種集成三方的東西, 都非常簡單,可能會有坑, 填上就好, 這篇文章以微博為例, 其實都是一樣的. 步驟或繁或簡單, 習慣就好。

  1. 首先在微博開放平臺注冊成為開發者http://open.weibo.com
  2. 創建應用
  1. 完善應用信息, 這里需要注意的是Bundle ID需要與應用一致, 同時記錄appKey 項目中會用到
  2. 在應用信息-高級信息中

回調地址

  1. 填寫URL Types

URL Types

  1. 配置info.plist同時加入白名單

info.plist

sinaweibohdsinaweiboweibosdkweibosdk2.5
  1. 導入SDK
    7.1 使用cocoapods你可以這樣
pod "WeiboSDK", :git => "https://github.com/sinaweibosdk/weibo_ios_sdk.git"

7.2 或者直接下載拖入工程

  1. 代碼
// AppDelegate中
#import #define WB_iOS_Key @""
@interface AppDelegate ()/**
*  1. 設置WeiboSDK的調試模式
*  2. 注冊
*/
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:WB_iOS_Key];
#pragma mark - WeiboSDKDelegate
- (void)didReceiveWeiboRequest:(WBBaseRequest *)request
{
}
// 根據自己的需求寫回調
// 這是微博Demo提供的代碼
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response
{
if ([response isKindOfClass:WBSendMessageToWeiboResponse.class])
{
NSString *title = NSLocalizedString(@"發送結果", nil);
NSString *message = [NSString stringWithFormat:@"%@: %d\\n%@: %@\\n%@: %@", NSLocalizedString(@"響應狀態", nil), (int)response.statusCode, NSLocalizedString(@"響應UserInfo數據", nil), response.userInfo, NSLocalizedString(@"原請求UserInfo數據", nil),response.requestUserInfo];
WBSendMessageToWeiboResponse* sendMessageToWeiboResponse = (WBSendMessageToWeiboResponse*)response;
NSString* accessToken = [sendMessageToWeiboResponse.authResponse accessToken];
if (accessToken)
{
self.wbtoken = accessToken;
}
NSString* userID = [sendMessageToWeiboResponse.authResponse userID];
if (userID) {
self.wbCurrentUserID = userID;
}
}
else if ([response isKindOfClass:WBAuthorizeResponse.class])
{
NSString *title = NSLocalizedString(@"認證結果", nil);
NSString *message = [NSString stringWithFormat:@"%@: %d\\nresponse.userId: %@\\nresponse.accessToken: %@\\n%@: %@\\n%@: %@", NSLocalizedString(@"響應狀態", nil), (int)response.statusCode,[(WBAuthorizeResponse *)response userID], [(WBAuthorizeResponse *)response accessToken],  NSLocalizedString(@"響應UserInfo數據", nil), response.userInfo, NSLocalizedString(@"原請求UserInfo數據", nil), response.requestUserInfo];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
message:message
delegate:nil
cancelButtonTitle:NSLocalizedString(@"確定", nil)
otherButtonTitles:nil];
self.wbtoken = [(WBAuthorizeResponse *)response accessToken];
self.wbCurrentUserID = [(WBAuthorizeResponse *)response userID];
self.wbRefreshToken = [(WBAuthorizeResponse *)response refreshToken];
[alert show];
}
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [WeiboSDK handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [WeiboSDK handleOpenURL:url delegate:self ];
}
  1. 完成圖- 請繼續往下看

webView

客戶端

狀態0 代表成功

  1. 你的應用是否具備獨立賬戶系統?什么意思呢? 就是自帶注冊登陸功能不? 一般都是有自己的用戶系統的.
    基本就是要數據,不要功能, 使用第三方登錄只是為了擁有更多用戶, 大致的思路你可以這樣理解
  2. 解釋
1、用戶觸發第三方登錄事件
2、請求授權用戶的資料(這個過程中可能涉及授權操作)
3、如果回調成功代入你應用的Login流程
4、否則錯誤進行錯誤處理
5、Login時客戶端發送用戶資料中的用戶ID給服務端
6、服務端判定用戶是已注冊用戶,則引導用戶進入系統,否則返回特定錯誤碼。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容