Facebook-unity-sdk未使用iOS原生SSO

8
我正在使用Unity 4.6和Facebook Unity SDK 6.0。在Android上一切看起来都很好,但在iOS上我似乎没有利用本地的Facebook SSO。它不断地回到基于浏览器的登录,这真的会给人留下不专业的印象。
我已经在十个不同的设备上进行了测试,所有设备均使用开发证书。
我已经完成了以下检查清单:
- XCode运行时没有收到任何错误或日志,应该没有任何问题,但仍然使用旧的“基于浏览器”的登录解决方案。 - 当我使用SDK中包含的示例场景时,也是如此。 - 应用程序在Facebook开发者控制台中启用了SSO,并且bundle ID匹配。 - info.plist中有FBXXXXXXXXX URL方案,并在XCode中显示正常。 - info.pList中的FacebookAppID键也已设置,并使用数字Facebook应用程序ID。 - 在Facebook中,该应用程序向公众开放,需要联系电子邮件,并配置了iOS捆绑包。
我尝试过使用开发人员、管理员和“陌生人”帐户,但一个都无法获得本机iOS Facebook登录。
是否有人遇到过这种情况?我能找到的大多数类似情况都超过一年了,不太适用于这种情况。

你是如何调用FB.Login的?你的应用程序配置了多个FB App ID吗? - shacharg
2个回答

1
要在iOS上实现本机的Facebook登录,请找到文件FbUnityInterface.mm(Assets/Facebook/Editor/iOS),并查找方法-(void)login:(const char *)scope
在此方法中,替换以下内容:
[self.session openWithBehavior:FBSessionLoginBehaviorWithFallbackToWebView]

使用这个:
[self.session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent]

Facebook Unity SDK默认不使用本机iOS日志记录行为,这有点奇怪。
还有一些更多的FBSessionLoginType行为,在FacebookSDK中也可以找到FBSession.h中描述:
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;

这不再是正确的答案了,Facebook将其移动到C#类中。 - Greg Lukosek
好知道 - 我的答案只是在那个问题被提出时有效的解决方法 - 因此它对于那个FB SDK版本是正确的。 - kreys

1
在Facebook SDK 7.2中,可以在MobileFacebook.cs文件中直接更改Unity中的shareDialogMode。enter image description here

我很高兴他们移动了它 :) - Nils Munch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接