带有 Facebook 登录的 IOS 应用程序卡在登录页面

Posted

技术标签:

【中文标题】带有 Facebook 登录的 IOS 应用程序卡在登录页面【英文标题】:IOS app with Facebook Logon stuck at Logon page 【发布时间】:2015-03-29 18:11:55 【问题描述】:

我正在使用 Facebook 登录构建一个示例 ios 测试应用程序,并按照 FB SDK 的说明合并 FBSDKLoginButton。单击登录按钮不会显示 Facebook 登录选项。这是我到目前为止的代码。预期的结果是什么?我怎样才能最好地测试这种登录体验?如何创建一个测试 FB 帐户?

//在视图控制器类中

- (void)viewDidLoad 

    [super viewDidLoad];

    FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
    loginButton.readPermissions = @[@"public_profile", @"email", @"user_friends"];
    loginButton.center = self.view.center;
    [self.view addSubview:loginButton];
    if ([FBSDKAccessToken currentAccessToken]) 
        // User is logged in, do work such as go to next view controller.
    


//在应用委托类中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions 
    // Override point for customization after application launch.
    [FBSDKLoginButton class];
    // Override point for customization after application launch.
    return YES;
    /*return [[FBSDKApplicationDelegate sharedInstance] application:application
                                    didFinishLaunchingWithOptions:launchOptions];
    

【问题讨论】:

【参考方案1】:

按照说明设置 plist 后,试试这个。

  #import <FBSDKCoreKit/FBSDKCoreKit.h>

    - (void)applicationDidBecomeActive:(UIApplication *)application 
      [FBSDKAppEvents activateApp];
    

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
      return [[FBSDKApplicationDelegate sharedInstance] application:application
                                      didFinishLaunchingWithOptions:launchOptions];
    

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
      return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                            openURL:url
                                                  sourceApplication:sourceApplication
                                                         annotation:annotation];
    

【讨论】:

我有这段完全相同的代码。由于某种原因它不起作用。关于这里可能发生的事情还有其他想法吗? 根据给定的信息很难确定。您是否能够运行 facebook SDK 提供的示例 iOS 应用程序? 不。由于某种原因,登录集成不起作用。单击 fb 登录按钮没有任何作用。【参考方案2】:

很抱歉,您的回复如此迅速,但您似乎忘记了委托:

loginButton.delegate = self

不要忘记在你的类声明中添加 FacebookDelegate 并有 2 个强制方法。 swift中有一个示例类,希望对您的Obj-C问题有所帮助。

class LoginViewController: UIViewController, FBSDKLoginButtonDelegate 

    override func viewDidLoad() 
        self.mFacebookButton.readPermissions = ["public_profile", "email", "user_friends"]
        self.mFacebookButton.delegate = self
   


    func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) 
        self.checkIsLogged()
    

    override func viewWillAppear(animated: Bool) 
        self.checkIsLogged()
    

    private func checkIsLogged()
        if  (FBSDKAccessToken.currentAccessToken() != nil) 
        let permissions = FBSDKAccessToken.currentAccessToken().permissions
        let token = FBSDKAccessToken.currentAccessToken().tokenString
        NSLog("\(permissions)")
        NSLog("\(token)")
    

    func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) 


    

【讨论】:

以上是关于带有 Facebook 登录的 IOS 应用程序卡在登录页面的主要内容,如果未能解决你的问题,请参考以下文章

带有 Facebook 单点登录的 iOS 应用程序中的“点赞”按钮

在 iOS 上使用带有 UIActivityViewController 的 Facebook SDK 会话对象

成功登录 Facebook 后将 iOS 应用程序重定向到特定的视图控制器或 url

phonegap + facebook 插件:登录打开浏览器而不是弹出窗口(iOS)

iOS Facebook SDK 登录视图有时会显示桌面 Web 而不是移动 Web

带有 facebook/gmail 的 OAuth 不适用于 iOS 模拟器(Cordova 应用程序 + Firebase)