3

我花了几个小时。阅读我可以在网上找到的所有相关内容,但无法解决此问题。我按照https://developers.facebook.com/docs/ios/login-ui-control/中提供的说明使用 FBLoginView

我可以看到 FBLogin 按钮。我点击它。它让我登录。我看到回调 loginViewShowingLoggedInUser 和 loginViewShowingLoggedOutUser 被调用。问题是 loginViewFetchedUserInfo 没有被调用。因此,我无法获取有关用户的任何信息(例如姓名、用户 ID、电子邮件等)。

这是我正在使用的代码:

CGRect loginFrame=CGRectMake(MARGIN,currentFrame.size.height-LOGINBUTTONHEIGHT,50 , 20);//width, height don't matter
FBLoginView * FBLoginView1 = [[FBLoginView alloc] init];
FBLoginView1.readPermissions =    @[@"email",
                                 @"basic_info",
                                 @"user_location",
                                 @"user_birthday",
                                 @"user_likes"];
FBLoginView1.frame = loginFrame;
FBLoginView1.delegate = self;
[[self view] addSubview:FBLoginView1];

[FBLoginView1 sizeToFit];

请帮我。

4

3 回答 3

4

它可能会有所帮助:我遇到了同样的问题。对我来说,解决方案是我没有正确分配代表。以编程方式,Facebook 建议您

FBLoginView *loginView = [[FBLoginView alloc] init];
loginView.delegate = self;

但是由于我已经通过情节提要设置了视图,所以我无法做到这一点。所以在检查器连接器中,我将代理插座连接到文件所有者(我只是将插座连接到场景)。

希望能帮助到你 :)

于 2014-04-29T22:54:59.263 回答
1

我找到了解决方案。实际上,loginViewFetchedUserInfo 是在 loginViewShowingLoggedInUser 之后调用的。我没有得到 loginViewFetchedUserInfo,因为我正在从 loginViewShowingLoggedInUser 中解散 modalviewcontroller。所以,还没有得到 loginViewFetchedUserInfo。如果我不关闭 modalviewcontroller,我会得到 loginViewFetchedUserInfo。

以下是解决方案的详细信息。我在 LoginViewcontroller 的 ViewDidLoad 中创建 FBLoginView(我实现的类的名称)。我在创建 FBLoginView (在 ViewDidLoad 函数内部)时设置了委托 LoginViewController 是使用 presentViewController 函数呈现的。发生问题是因为我在 loginViewShowingLoggedInUser 中关闭了视图控制器。所以它没有收到 loginViewFetchedUserInfo ( loginViewFetchedUserInfo 在 loginViewShowingLoggedInUser 之后调用)。

对我有用的解决方案是从 loginViewFetchedUserInfo 中关闭 LoginViewcontroller。

希望详细信息对其他人有所帮助。

于 2013-10-12T14:19:02.527 回答
0

我有同样的问题。就我而言,delegate没有正确设置。确保您在以下几行logincontroller

FBLoginView *loginView = [[FBLoginView alloc] init];
loginView.delegate = self;
于 2015-08-13T00:28:59.757 回答