0

我正在尝试使用适用于 Xamarin.iOS 的 Facebook SDK(来自 Facebook,而不是来自 Octorcurve)来让用户在我的应用程序上获得身份验证。

我遵循了商店中组件附带的示例。该示例可以正常工作,但我在登录/权限后卡住了,没有触发事件来通知 viewController 我们有用户登录。我已经按照 facebook 的要求使用应用程序名称、id 和 Url 架构设置了 plist 文件开发工具包。所以,代码是:

请注意,我不是从代码创建 UI。我有一个带有 UI 的 .xib IB 文件,是的,我为 FBLoginView 添加了一个视图,并将其自定义类设置为 FBLoginView。

AppDelegate.cs(为简洁起见省略了其余代码):

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
    // create a new window instance based on the screen size
    window = new UIWindow (UIScreen.MainScreen.Bounds);

    viewController = new LoginViewController ();
    navController = new UINavigationController (viewController);

    window.RootViewController = navController;
    window.MakeKeyAndVisible ();

    return true;
}

public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
    return FBSession.ActiveSession.HandleOpenURL(url);
}

public override void OnActivated (UIApplication application)
{
    FBSession.ActiveSession.HandleDidBecomeActive();
}

LoginViewController.cs(NIB 文件的控制器):

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();
    loginView = btnLogin as FBLoginView;
    loginView.ReadPermissions = new string[] { "email"  };
    loginView.PublishPermissions = new string[]{ "publish_actions", "publish_stream", "manage_pages" };

    loginView.DefaultAudience = FBSessionDefaultAudience.Everyone;

    loginView.ShowingLoggedInUser += (sender, e) => 
        {
            var a = e;
        };

    loginView.FetchedUserInfo += (sender, e) => 
        {
            user = e.User;
        };
}

所以,这个代码我有两个问题:

  1. 请注意,我将 btnLogin 转换为 FBLoginView,因为 idk 如何在 Interface Builder 上设置插座以使用正确类型的 FBLoginView ...它总是说当我在 .h 文件中添加插座时找不到它的类型. 所以我只是将它创建为 UIView 并对代码进行了强制转换。此演员表有效且仍在工作,因为在同意 FB 屏幕上要求用户授权我正在传递的权限。

  2. ShowingLoggedInUser 和 FetchedUserInfo 这两个事件永远不会被调用,AppDelegate 永远不会调用 OpenUrl,也不会调用 OnActivated。

我错过了什么吗?我所需要的只是获取登录后应该在某处返回的 access_token。我如何得到它?

我真的很感激任何帮助。

谢谢!

4

1 回答 1

1

只是为了给人们提供反馈...

突然,两天后我的头撞到了墙上,我刚刚清理了项目,重建它并重新启动 Xamarin STUDIO ......现在事件被解雇了......没有任何改变,一切都在工作......

Xamarin 有一些奇怪的行为无法解释,这些行为是否正常工作,比如有时我启动应用程序,它只是挂在“等待调试器连接......”并且在模拟器中连接到设备时没有任何反应它工作正常...

谢谢

于 2013-09-26T23:26:23.700 回答