Facebook 通过 Safari 登录不使用已安装的应用程序

Posted

技术标签:

【中文标题】Facebook 通过 Safari 登录不使用已安装的应用程序【英文标题】:Facebook login through Safari not using installed App 【发布时间】:2015-10-10 05:38:37 【问题描述】:

我已经使用 Facebook 开发者门户中的 Facebook SDK 并完成了所有编写的步骤,但在通过 Facebook 从我的应用程序登录期间,默认情况下它使用 Safari 进行登录过程。

为什么它不为此目的使用已安装的应用程序?

【问题讨论】:

看起来这是 ios9 的设计Facebook Login - iOS 9 - Without Safari 【参考方案1】:

试试这个。

-(IBAction)CLK_ConnectWithFB:(id)sender

    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
 // If the Facebook app is not installed on the device, falls back to \c FBSDKLoginBehaviorBrowser. This is the default behavior.
    login.loginBehavior = FBSDKLoginBehaviorNative;
    [login logInWithReadPermissions:@[@"email", @"user_friends",@"user_posts"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
     
         if (error)
         
             // Process error
             NSLog(@"error is :%@",error);
         
         else if (result.isCancelled)
         
             // Handle cancellations
             NSLog(@"error is :%@",error);
         
         else
         
             if ([result.grantedPermissions containsObject:@"email"])
             
                 [self fetchUserInfo];
                 [login logOut];
             
         
     ];


-(void)fetchUserInfo

    if ([FBSDKAccessToken currentAccessToken])
    
        [[[FBSDKGraphRequest alloc] initWithGraphpath:@"me" parameters:@@"fields": @"id,name,link,first_name, last_name, picture.type(large), email, birthday, bio ,location ,friends ,hometown ,posts, friendlists"]
         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
             if (!error)
             
                 NSLog(@"result is :%@",result);
                 NSLog(@"friend is :%@",[[result valueForKey:@"friends"]objectForKey:@"data"]);
                 NSString *photostring=[[[result valueForKey:@"picture"] objectForKey:@"data"] valueForKey:@"url"];
                 photostring = [photostring stringByReplacingOccurrencesOfString:@"&" withString:@"%26"];

                // [self Userlogin:[result valueForKey:@"email"] Username:[result valueForKey:@"name"] PhotoUrl:photostring LoginType:@"fb" Phoneno:@""];
             
         ];          
    

【讨论】:

我已经使用了您的代码,但出现了另一个问题,我在用户/文档中导入了 Facebook SDK 设置路径搜索路径相同的参考在资源中添加框架但仍然显示“未找到 Sdk”请帮助 删除项目中的 facebook sdk 然后重新安装 我做了同样的事情,删除 Facebook SDK 的引用并再次使用二进制链接删除 sdk 仍然有相同的错误 你有最新的 Facebook SDK 吗? 新 sdk 将 facebook 端移除到 facebook 框架,所以不用担心。

以上是关于Facebook 通过 Safari 登录不使用已安装的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Facebook SDK 3.1 使用弹出视图登录 Facebook,而不是通过 safari? [关闭]

Facebook iOS SDK 使用 UIWebView 而不是 safari 登录(本机技巧/解决方案)

通过 iOS 9 登录 FB 时打开 Safari 网页视图

苹果拒绝应用程序 10.6,因为 Facebook 打开 Safari 登录

Xcode facebook登录错误已关闭

Facebook SDK 登录永远不会在 iOS 9 上回调我的应用程序