我无法找到与该问题有关的任何内容,因此我想将其发布在此处。
我有一个使用Facebook SDK插件的Android Unity应用程序。在Unity编辑器中工作时,我可以通过他们的访问令牌与测试用户一起登录。但是,将应用程序部署到Android设备时,取决于设备上是否安装了Facebook App本身。
如果设备上安装了Facebook App,则我的测试用户根本无法登录。如果我卸载了Facebook App,则测试用户将按预期成功登录。
是否需要进行设置/配置更改/ API调用才能解决此问题?显然,我希望我的应用程序能够登录该设备是否已安装该应用程序。
非常感谢您的任何信息
编辑:我应该澄清-如果已安装Facebook应用程序,则当用户通过我的应用程序登录时,它确实使用Facebook App登录了它们,但没有在我的应用程序中登录过它们
一些更多信息可以缩小范围(我很冗长),我对此表示歉意:
一旦测试用户帐户成功登录到我的应用程序中(设备上未安装Facebook App本身),此后,即使安装了Facebook App,测试用户帐户也可以正常登录我的应用程序。
场景:
已为我的应用配置了测试用户“ Bob”,并已对其进行了预安装
每次“ Bob”都会通过Unity编辑器使用令牌登录,仅在设备上存在问题
平板电脑安装了Facebook App
在设备上运行我的应用,尝试使用“ Bob”登录
实例化Facebook App登录对话框以进行登录。
弹出“应用授权”对话框,单击“确定”批准
我的应用返回到主场景,但是“ Bob”未登录
打开Facebook App,然后发现“ Bob”已登录Facebook App
从设备上卸载Facebook App
运行我的应用程序(清除数据后),尝试再次登录“ Bob”
实例化较小的Facebook登录对话框,然后是身份验证对话框
“鲍勃”可以很好地登录我的应用
现在-这是我发现的其他东西。在这种情况下-一旦我通过我的应用程序第一次成功登录了测试用户帐户,就可以重新安装Facebook App,并且对再次登录没有影响。使用我的应用程序登录一次后,从那时起他就可以了。但是,如果在首次尝试登录和批准该应用程序时安装了Facebook App,则它将失败。
根据要求,这是登录尝试失败的日志。肯定有几个问题,一个权限异常马上就出现了,也许它不断扩散导致一切失败。我不确定为什么为什么会出现权限问题,因为我只发送电子邮件和publish_actions请求,就像示例中一样。最后,将调用我的OnInitCallback,并显示已取消登录(即使出现授权对话框并单击“确定”)。也许这是FB在事情崩溃时雄辩地退出的方式?不确定。无论如何,我仍然无法解决这种情况的发生方式和原因。也许我不应该为此担心,而只是希望并祈祷发行版本和实际用户能够建立联系吗?
W/fb4a(:<default>):BlueServiceQueue(28412): Exception during service
W/fb4a(:<default>):BlueServiceQueue(28412): com.facebook.http.protocol.ApiExcept
ion: The app cannot ask for publish or manage permissions along with read permis
sions.
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.protocol.Ap
iResponseChecker.b(ApiResponseChecker.java:83)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.protocol.Ap
iResponseChecker.a(ApiResponseChecker.java:162)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.protocol.Ap
iResponse.g(ApiResponse.java:151)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.platform.auth.se
rver.AuthorizeAppMethod.a(AuthorizeAppMethod.java:275)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.platform.auth.se
rver.AuthorizeAppMethod.a(AuthorizeAppMethod.java:31)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.protocol.Ap
iResponseHandler.a(ApiResponseHandler.java:55)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.protocol.Ap
iResponseHandler.handleResponse(ApiResponseHandler.java:28)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.common.FbHt
tpRequestProcessor.a(FbHttpRequestProcessor.java:314)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.common.FbHt
tpRequestProcessor.a(FbHttpRequestProcessor.java:144)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.common.FbHt
tpRequestProcessor.b(FbHttpRequestProcessor.java:100)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.common.FbHt
tpRequestProcessor.a(FbHttpRequestProcessor.java:230)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.protocol.Si
ngleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:402)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.protocol.Si
ngleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:164)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.http.protocol.Ab
stractSingleMethodRunner.a(AbstractSingleMethodRunner.java:18)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.platform.common.
server.SimplePlatformOperation.a(SimplePlatformOperation.java:40)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.platform.common.
server.PlatformOperationHandler.a(PlatformOperationHandler.java:60)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.fbservice.servic
e.BlueServiceQueue.e(BlueServiceQueue.java:329)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.fbservice.servic
e.BlueServiceQueue.d(BlueServiceQueue.java:55)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.fbservice.servic
e.BlueServiceQueue$3.run(BlueServiceQueue.java:258)
W/fb4a(:<default>):BlueServiceQueue(28412): at java.util.concurrent.Executor
s$RunnableAdapter.call(Executors.java:422)
W/fb4a(:<default>):BlueServiceQueue(28412): at java.util.concurrent.FutureTa
sk.run(FutureTask.java:237)
W/fb4a(:<default>):BlueServiceQueue(28412): at com.facebook.common.executors
.ListenableScheduledFutureImpl.run(ListenableScheduledFutureImpl.java:59)
W/fb4a(:<default>):BlueServiceQueue(28412): at android.os.Handler.handleCall
back(Handler.java:733)
W/fb4a(:<default>):BlueServiceQueue(28412): at android.os.Handler.dispatchMe
ssage(Handler.java:95)
W/fb4a(:<default>):BlueServiceQueue(28412): at android.os.Looper.loop(Looper
.java:136)
W/fb4a(:<default>):BlueServiceQueue(28412): at android.os.HandlerThread.run(
HandlerThread.java:61)
W/fb4a(:<default>):GDPDialog(28412): Failed to send
W/fb4a(:<default>):GDPDialog(28412): com.facebook.fbservice.service.ServiceExcep
tion: API_ERROR: API_ERROR
W/fb4a(:<default>):GDPDialog(28412): at com.facebook.fbservice.ops.BlueServic
eOperation.c(BlueServiceOperation.java:639)
W/fb4a(:<default>):GDPDialog(28412): at com.facebook.fbservice.ops.BlueServic
eOperation.c(BlueServiceOperation.java:47)
W/fb4a(:<default>):GDPDialog(28412): at com.facebook.fbservice.ops.BlueServic
eOperation$2.run(BlueServiceOperation.java:604)
W/fb4a(:<default>):GDPDialog(28412): at android.os.Handler.handleCallback(Han
dler.java:733)
W/fb4a(:<default>):GDPDialog(28412): at android.os.Handler.dispatchMessage(Ha
ndler.java:95)
W/fb4a(:<default>):GDPDialog(28412): at android.os.Looper.loop(Looper.java:13
6)
W/fb4a(:<default>):GDPDialog(28412): at android.app.ActivityThread.main(Activ
ityThread.java:5017)
W/fb4a(:<default>):GDPDialog(28412): at java.lang.reflect.Method.invokeNative
(Native Method)
W/fb4a(:<default>):GDPDialog(28412): at java.lang.reflect.Method.invoke(Metho
d.java:515)
W/fb4a(:<default>):GDPDialog(28412): at com.android.internal.os.ZygoteInit$Me
thodAndArgsCaller.run(ZygoteInit.java:779)
W/fb4a(:<default>):GDPDialog(28412): at com.android.internal.os.ZygoteInit.ma
in(ZygoteInit.java:595)
W/fb4a(:<default>):GDPDialog(28412): at dalvik.system.NativeStart.main(Native
Method)
V/FBUnitySDK(30488): sending to Unity OnLoginComplete({"cancelled":true,"key_has
h":"(my keyhash was here)"})
最佳答案
我们已经测试了安装了FB应用程序(sdk 5.0.4)的Android用户登录到我们的统一应用程序。
FB.Login(“ email,publish_actions”,回调)
如果范围不同,请尝试删除某些范围,因为日志中的异常表明是问题所在。从Facebook文档中,只读权限和发布权限应分别设置:
https://developers.facebook.com/docs/facebook-login/permissions/#publishing
一旦用户登录一次,登录/验证就会在FB.Init()中进行,因此将采用不同的代码路径。
关于android - Facebook Unity SDK测试用户登录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22917834/