iOS國(guó)外第三方登錄_ Facebook登錄


Facebook接入

1.1官方文檔

參考文檔

2.1 在配置文件Info.plist中配置應(yīng)用白名單,必須添加以下所有字段,否則可能無(wú)法跳轉(zhuǎn)

  <key>LSApplicationQueriesSchemes</key>
    <array>
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
    </array>

2.2點(diǎn)擊XCode項(xiàng)目名,選擇Info,添加FaceBook的URL Types

identifier:fb URL Schemes:fb前綴后+FaceBook App ID(用戶(hù)自己申請(qǐng)的賬號(hào))


Paste_Image.png

2.3 Appdelegate中的配置

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //facebook
    [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
    [FBSDKSettings setAppID:Facebook_APP_ID];

      return YES;
}
// 2
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
    return  
    [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]
}
// 3
- (void)applicationDidBecomeActive:(UIApplication *)application {

    [FBSDKAppEvents activateApp];
}

2.4 loginFacebook方法

- (void)loginFacebookSuccess:(UIViewController *)viewController success:(void (^)(id response))successBlock failure:(void (^)(NSError *error))failureBlock{
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

    [login logOut]; 
 [[FBSDKLoginManager new] logOut];
//這個(gè)一定要寫(xiě),不然會(huì)出現(xiàn)換一個(gè)帳號(hào)就無(wú)法獲取信息的錯(cuò)誤(退出方法)
   
    [FBSDKProfile enableUpdatesOnAccessTokenChange:YES];
    login.loginBehavior = FBSDKLoginBehaviorBrowser; // 優(yōu)先客戶(hù)端方式
    [login  logInWithReadPermissions: @[@"public_profile"]
     fromViewController:viewController
     handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
         if (error) {
             NSError *error = [CIAccountError createError:ErrorThirdLoginFailure];
             failureBlock(error);
         } else if (result.isCancelled) {
             NSError *error = [CIAccountError createError:ErrorThirdLoginCancel];
             failureBlock(error);
         } else {
             NSString *token = result.token.tokenString;
             FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                                           initWithGraphPath:result.token.userID
                                           parameters:nil
                                           HTTPMethod:@"GET"];
             [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                                   id result,
                                                   NSError *error) {
                 if (error) {
                     NSError *resultError = [CIAccountError createError:ErrorThirdLoginFailure];
                     failureBlock(resultError);
                 }else{
                     NSString *nickName = [result objectForKey:@"name"];
                     NSString *openId = [result objectForKey:@"id"];
                     NSDictionary *resultDic = @{@"openid":openId,
                                                 @"nickname":nickName,
                                                 @"account_type":@"facebook",
                                                 @"access_token":token,
                                                 @"third_appid":Facebook_APP_ID};
                     successBlock(resultDic);
                 }

             }];
         }
     }];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官方網(wǎng)址: http://dev.umeng.com/social/ios/operation#2 一、注冊(cè)友盟賬...
    PerhapYs閱讀 13,112評(píng)論 7 44
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,661評(píng)論 19 139
  • 你笑著說(shuō)了再見(jiàn) 我也笑著轉(zhuǎn)過(guò)身去 一切都自然而然 就像 這聲再見(jiàn)過(guò)后還能再見(jiàn) 改變總是來(lái)得悄無(wú)聲息 再不用在路口期...
    西瓜瓜的日常閱讀 507評(píng)論 6 6
  • 很久以前養(yǎng)成了隨時(shí)隨地腦補(bǔ)小故事的習(xí)慣。對(duì)我來(lái)說(shuō),這是一個(gè)致命的習(xí)慣。因?yàn)樵谀X補(bǔ)的小故事的世界中,我是世界的中心...
    laserforce閱讀 348評(píng)論 0 1
  • 羨慕別人,過(guò)的很好。 自己卻在角落里。
    一個(gè)句號(hào)閱讀 185評(píng)論 0 0

友情鏈接更多精彩內(nèi)容