美文网首页iOS 移动端开发iOS开发
iOS国外第三方登录_ Facebook登录

iOS国外第三方登录_ Facebook登录

作者: 我想哟 | 来源:发表于2017-02-17 17:19 被阅读1214次

    Facebook接入

    1.1官方文档

    参考文档

    2.1 在配置文件Info.plist中配置应用白名单,必须添加以下所有字段,否则可能无法跳转

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

    2.2点击XCode项目名,选择Info,添加FaceBook的URL Types

    identifier:fb URL Schemes:fb前缀后+FaceBook App ID(用户自己申请的账号)


    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];
    //这个一定要写,不然会出现换一个帐号就无法获取信息的错误(退出方法)
       
        [FBSDKProfile enableUpdatesOnAccessTokenChange:YES];
        login.loginBehavior = FBSDKLoginBehaviorBrowser; // 优先客户端方式
        [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);
                     }
    
                 }];
             }
         }];
    }
    

    相关文章

      网友评论

      • 学不会灬:请问你为什么只能跳转到网页,不是直接打开Facebook的App
        我想哟:@wangzhewansheng 首先谷歌Facebook登录需要翻墙,再看看申请的key对不对
        lloveyouyou:我这一直报这个错误,点击之后没有任何跳转,请问大神知道是什么原因吗

        facebook login result.grantedPermissions = (null),error = Error Domain=com.facebook.sdk.core Code=3 "(null)" UserInfo={com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Unknown error building URL.}

      本文标题: iOS国外第三方登录_ Facebook登录

      本文链接:https://www.haomeiwen.com/subject/lbjlwttx.html