我花了好几个小时。我在网上找了所有相关的东西,但还是没能解决这个问题。我正在按照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];
3条答案
按热度按时间9rnv2umw1#
我找到解决办法了。实际上,loginViewFetchedUserInfo在loginViewShowingLoggedInUser之后调用。我没有得到loginViewFetchedUserInfo,因为我从loginViewShowingLoggedInUser中删除了modalviewcontroller。所以,它并不存在,无法获取loginViewFetchedUserInfo。如果我不关闭modalviewcontroller,我会得到loginViewFetchedUserInfo。
以下是解决方案的详细信息。我在LoginViewcontroller(我实现的类的名称)的ViewDidLoad中创建FBLoginView。我在创建FBLoginView时设置了委托(在ViewDidLoad函数内)LoginViewController使用presentViewController函数呈现。发生问题的原因是我正在关闭loginViewShowingLoggedInUser中的视图控制器。因此,无法接收loginViewFetchedUserInfo(loginViewFetchedUserInfo在loginViewShowingLoggedInUser之后调用)。
对我有效的解决方案是从loginViewFetchedUserInfo中删除LoginViewcontroller。
希望这些细节对其他人有帮助。
a0zr77ik2#
我也有同样的问题。在我的例子中,
delegate
没有正确设置。确保logincontroller
中的以下行:ffx8fchx3#
它可能有助于:我也有同样的问题。对我来说,解决方案是我没有正确地分配委托。从程序上讲,Facebook建议您
但是由于我已经通过故事板设置了视图,所以我不能这样做。因此,在检查器连接器中,我将代理出口连接到文件的所有者(我只是将出口连接到场景)。
希望有帮助:)