OGeek|极客世界-中国程序员成长平台

标题: ios - 不再调用 FBLoginView 委托(delegate)方法 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 08:43
标题: ios - 不再调用 FBLoginView 委托(delegate)方法

我在我的应用中使用 FBLoginView(版本 3.xx)根据他们的 Facebook 个人资料自动创建用户帐户,但 FBLoginViewDelegate 的委托(delegate)回调没有不再被调用。

我的代码如下:

在我的 AppDelegatedidFinishLaunchingWithOptions 方法中,我有这一行:

[FBLoginView class];

我有一个名为 LoginHandler 的类,它符合 FBLoginViewDelegate 协议(protocol)并实现了这些方法:

- (void)loginViewShowingLoggedInUserFBLoginView *)loginView
- (void)loginViewShowingLoggedOutUserFBLoginView *)loginView
- (void)loginViewFetchedUserInfoFBLoginView *)loginView userid<FBGraphUser>)user
- (void)loginViewFBLoginView *)loginView handleErrorNSError *)error

在我的 View Controller 的 viewDidLoad 方法中,我有以下代码:

self.fbLoginView.readPermissions = @[@"public_profile", @"email"];
self.fbLoginView.delegate = [LoginHandler sharedInstance];

我还设置了我的 Info.plist:

FacebookAppID (containing <my-app-id>)
FacebookDisplayName (containing my app name=
CFBundleURLSchemes (containing fb<my-app-id>)

当我按下 Facebook 登录按钮时,它会切换到 Facebook 应用程序,询问权限(仅第一次)并返回到我的应用程序。但是,此时没有调用任何委托(delegate)方法。这以前可以工作,我确实得到了 loginViewShowingLoggedInUserloginViewFetchedUserInfo 的回调,但前段时间它停止工作,我根本不知道是什么改变破坏了它. 有趣的是,每次我启动应用程序时(在我使用 Facebook 按钮执行任何操作之前)我的 loginViewShowingLoggedOutUser 都会被调用。我不知道这是否与我的问题有关,或者这是否是正常行为。



Best Answer-推荐答案


我找到了答案。我需要在我的应用委托(delegate)中重写此方法。

-(BOOL)applicationUIApplication *)application openURLNSURL *)url sourceApplicationNSString *)sourceApplication annotationid)annotation
{
    // Call FBAppCall's handleOpenURL:sourceApplication to handle Facebook app responses
    BOOL wasHandled = [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];

    // You can add your app-specific url handling code here if needed
    return wasHandled;
}

关于ios - 不再调用 FBLoginView 委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24800673/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4