android - 在浏览器中打开 "Platform off"后登录时持续出现 Facebook SDK http.protocol.ApiException

标签 android facebook authentication error-handling facebook-sdk-3.0

我正在使用 Android Facebook SDK 在 Android 应用程序上开发 Facebook 集成。

我正在使用 Session.openActiveSession(this, true, facebookSessionChangeCb); 调用登录我的用户,如 Facebook 的 Android 文档中所述。

大多数作品都表现出色。但有一个问题,重现如下:

1) 我在 Android 设备上安装 native Facebook 应用,并登录 native 应用。

2) 我还在互联网浏览器上导航至设置并将平台关闭,如下面的屏幕截图所示。

3) 然后,我尝试使用 Android Facebook SDK 登录具有 Facebook 集成的 native Android 应用。

然后我得到堆栈跟踪

02-13 15:27:54.687: W/fb4a(:<default>):BlueServiceQueue(16890): Exception during service
02-13 15:27:54.687: W/fb4a(:<default>):BlueServiceQueue(16890):         com.facebook.http.protocol.ApiException: Service temporarily unavailable
02-13 15:27:54.687: W/fb4a(:<default>):BlueServiceQueue(16890): at     com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:83)
02-13 15:27:54.687: W/fb4a(:<default>):BlueServiceQueue(16890): at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:162)
02-13 15:27:54.687: W/fb4a(:<default>):BlueServiceQueue(16890): at com.facebook.http.protocol.ApiResponse.g(ApiResponse.java:158)
02-13 15:27:54.687: W/fb4a(:<default>):BlueServiceQueue(16890): at com.facebook.platform.auth.server.AuthorizeAppMethod.a(AuthorizeAppMethod.java:274)
 ...
02-12 18:36:42.928: W/fb4a(:<default>):GDPDialog(5750): Failed to send 
02-12 18:36:42.928: W/fb4a(:<default>):GDPDialog(5750): com.facebook.fbservice.service.ServiceException: API_ERROR: API_ERROR 
02-12 18:36:42.928: W/fb4a(:<default>):GDPDialog(5750): at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.java:640) 

此异常声称是暂时不可用的类型异常,但显然不是,因为它会无限期地保持这种状态。

这是一个问题:我不想将其视为 503,因为它总是会失败,并且我最终会向用户发送一条可怕的错误消息,或者更糟糕 “稍后再试”,正如异常(exception)所暗示的那样,这只是误导用户。

问题是:我做错了什么吗?我在某些方面是不是很迟钝?如果没有,有解决方法吗?以前有人遇到过这个问题吗?我在 SO 上找不到这个堆栈。如果这是正常的,人们如何向这里的用户发送消息?重要的是,我们能否区分这种情况与真正的临时服务故障,以便我可以告诉我的用户出了什么问题?

提前非常感谢!


(下面的屏幕截图让您知道我指的是什么)

That screenshot

最佳答案

一个月过去了,看来这确实是不可避免的了!

能够在浏览器中关闭“平台”是 Facebook 隐私服务的一部分。它经常被认为是一种能够 Conceal 应用邀请等的方法。

我的最佳猜测是,提供一个不指示用户已执行操作的状态代码是有意义的,作为一种安全措施,使用户远离应用程序。

一个好的解决方案是在您的文档中添加有关 Facebook 平台设置的部分(如果您有)。

关于android - 在浏览器中打开 "Platform off"后登录时持续出现 Facebook SDK http.protocol.ApiException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21759227/

相关文章:

java - 将自定义身份验证包装到 Spring 安全性中的最简单方法?

安卓模式 : A Spinner where every item launches a different Activity

android - 尝试为事件设置时区

android - 如何从 ubuntu 获取 android 电池电量?

android - 共享 Facebook 帖子中的应用程序名称需要导航到 Facebook 页面

android - Facebook Messenger 如何绘制聊天头? (安卓)

Api token 身份验证 - 通过参数或 header ?

ios - WKWebView和身份验证

android - Kotlin 变量被初始化两次

facebook - 使用存储在我电脑中的过期 SSL 证书的网站的异常(exception)情况在哪里?