ios 我使用FBLogInView来实现FBLogin,loginViewFetchedUserInfo未被调用

rkkpypqq  于 2023-05-30  发布在  iOS
关注(0)|答案(3)|浏览(145)

我花了好几个小时。我在网上找了所有相关的东西,但还是没能解决这个问题。我正在按照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];
9rnv2umw

9rnv2umw1#

我找到解决办法了。实际上,loginViewFetchedUserInfo在loginViewShowingLoggedInUser之后调用。我没有得到loginViewFetchedUserInfo,因为我从loginViewShowingLoggedInUser中删除了modalviewcontroller。所以,它并不存在,无法获取loginViewFetchedUserInfo。如果我不关闭modalviewcontroller,我会得到loginViewFetchedUserInfo。
以下是解决方案的详细信息。我在LoginViewcontroller(我实现的类的名称)的ViewDidLoad中创建FBLoginView。我在创建FBLoginView时设置了委托(在ViewDidLoad函数内)LoginViewController使用presentViewController函数呈现。发生问题的原因是我正在关闭loginViewShowingLoggedInUser中的视图控制器。因此,无法接收loginViewFetchedUserInfo(loginViewFetchedUserInfo在loginViewShowingLoggedInUser之后调用)。
对我有效的解决方案是从loginViewFetchedUserInfo中删除LoginViewcontroller。
希望这些细节对其他人有帮助。

a0zr77ik

a0zr77ik2#

我也有同样的问题。在我的例子中,delegate没有正确设置。确保logincontroller中的以下行:

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

ffx8fchx3#

它可能有助于:我也有同样的问题。对我来说,解决方案是我没有正确地分配委托。从程序上讲,Facebook建议您

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

但是由于我已经通过故事板设置了视图,所以我不能这样做。因此,在检查器连接器中,我将代理出口连接到文件的所有者(我只是将出口连接到场景)。
希望有帮助:)

相关问题