Ios (BOOL)openSessionWithAllowLoginUI:(BOOL)永远不会调用allowLoginUI

Ios (BOOL)openSessionWithAllowLoginUI:(BOOL)永远不会调用allowLoginUI,ios,objective-c,permissions,facebook-login,Ios,Objective C,Permissions,Facebook Login,我遵守了所有的指示: (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI在我的 appdelegate标头及其实现 NSString*const FBSessionStateChangedNotification是唯一的 我使用了一个FBLoginView,就像在美味的示例应用程序中一样 但是从来没有调用过openSessionWithAllowLoginUI 因为权限是在该方法中设置的,所以我无法更改它们 - (BOOL)openSes

我遵守了所有的指示:

  • (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI
    在我的 appdelegate标头及其实现
  • NSString*const FBSessionStateChangedNotification
    是唯一的
  • 我使用了一个
    FBLoginView
    ,就像在美味的示例应用程序中一样
但是从来没有调用过openSessionWithAllowLoginUI

因为权限是在该方法中设置的,所以我无法更改它们

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI
{
    return [FBSession openActiveSessionWithReadPermissions:@[@"basic_info", @"email"]
                                              allowLoginUI:allowLoginUI
                                         completionHandler:^(FBSession *session, FBSessionState state, NSError *error)
            {
                [self sessionStateChanged:session state:state error:error];
            }];
}

我能做些什么来解决这个问题?

他们建议的Facebook开发者网站,你必须在ApplicationIDFinish启动自己时启动该部分。因此,您需要使用allowloginui:NO调用OpenSession(无需提供登录ui)。不要担心,如果用户没有登录,这个方法不会做任何事情。在另一种情况下,如果用户已经获得授权,它将为用户启动一个会话,并更改状态(您将收到通知),以便您可以相应地设置登录按钮。最后,如果此方法无法启动会话,则允许用户通过调用openSessionWithAllowLoginUI通过登录按钮登录:是尝试将facebook iOS sdk更新为最新版本


使用@“Public_profile”代替如下所示的@“basic_info”:FBLoginView*loginView=[[FBLoginView alloc]initWithReadPermissions:@[@“Public_profile”、@“email”、@“user_friends”]

我不明白你的问题。你说你必须调用的方法问题是,尽管这个方法存在并且实现了,但在运行时从未调用过。有人必须调用这个方法,它不会自动得到调用。实际上,从ApplicationIDFinishLaunching开始,您必须调用该方法OK,我自己在
ApplicationIDBecomeActive
中调用了该方法(也调用了
ApplicationIDFinishLaunching
),但它会在启动时提示用户。我希望用户在登录时得到提示。你必须这样调用[self-openSessionWithAllowLoginUI:NO]我已经实现了登录,就像在美味的示例应用程序中一样。通过使用情节提要,添加一个
UIView
并将其与类
FBLoginView
关联,可以完成此操作。我请求权限的问题的解决方案是添加
self.loginView.readPermissions=@[@“基本信息”,“电子邮件”]viewDidLoad
方法中的code>(为该方法创建出口后)。这是一份非常详细的文件…@btoueg如果你解决了你的问题,那么就把它作为一个答案发布,并接受它,这样其他人就可以了解这个解决方案。