Facebook-unity-sdk没有使用iOS原生SSO

时间:2014-11-26 12:08:26

标签: ios unity3d facebook-unity-sdk

我正在使用Unity 4.6和Facebook Unity SDK 6.0。

在Android上看起来很棒,但在iOS上我似乎没有使用原生的Facebook SSO。它不断恢复到基于浏览器的登录,这真的给人一种不专业的氛围。

我在十个不同的设备上测试了这一点,所有设备都使用了开发人员证书。

我已经查看了以下清单:

  • 运行中的XCode收到没有错误或日志,表明有任何错误,但仍然使用旧的“基于浏览器”的登录解决方案。
  • 当我使用SDK中包含的示例场景时,这也适用。
  • 该应用已在Facebook Developer控制台中启用SSO,且捆绑ID匹配。
  • FBXXXXXXXXX URL sceme位于info.plist中,在XCode中显示得很好。
  • 还设置了info.pList中的FacebookAppID密钥,并使用了数字Facebook应用程序ID。
  • 在Facebook中,该应用程序向公众开放,需要联系电子邮件,并且已配置iOS软件包。

我已尝试过开发人员,管理员和“陌生人”帐户,而且没有一个帐户能够获得原生的iOS facebook登录。

有没有人见过这个?我能找到的大多数类似案例都超过一年,并不适用于此。

2 个答案:

答案 0 :(得分:1)

要在iOS上登录原生facebook,请找到文件FbUnityInterface.mm(资产/ Facebook /编辑/ iOS)并找到方法-(void)login:(const char *)scope

在此方法中替换:

[self.session openWithBehavior:FBSessionLoginBehaviorWithFallbackToWebView]

用这个:

[self.session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent]
默认情况下,Facebook Unity SDK不使用本机iOS日志记录行为,这有点奇怪。

还有一些FBSessionLoginType行为,FBSession.h中描述的行为也可以在FacebookSDK中找到:

typedef enum {
    /*! Attempt Facebook Login, ask user for credentials if necessary */
    FBSessionLoginBehaviorWithFallbackToWebView      = 0,
    /*! Attempt Facebook Login, no direct request for credentials will be made */
    FBSessionLoginBehaviorWithNoFallbackToWebView    = 1,
    /*! Only attempt WebView Login; ask user for credentials */
    FBSessionLoginBehaviorForcingWebView             = 2,
    /*! Attempt Facebook Login, prefering system account and falling back to fast app switch if necessary */
    FBSessionLoginBehaviorUseSystemAccountIfPresent  = 3,
    /*! Attempt only to login with Safari */
    FBSessionLoginBehaviorForcingSafari = 4,
} FBSessionLoginBehavior;

答案 1 :(得分:1)

在Facebook SDK 7.2中,在MobileFacebook.cs中更改Unity本身的shareDialogMode enter image description here