【发布时间】:2013-01-02 22:46:58
【问题描述】:
我实际上是在关注 facebook sdk 示例中的 SessionLoginFragment.java 示例。
我真的不明白的是:
当我制作时
session.openForRead(new Session.OpenRequest(fragment).setCallback(statusCallback));
将我的用户登录到 facebook 并请求基本读取权限(只是为了测试集成)它根本不起作用。
我用调试器挖了一点,然后我跟着路径走。如果您没有将 requestCode 放入会话的 OpenRequest 中,它将给它一个随机的(这没关系)。
openForRead(我的实际会话处于创建状态)将创建权限对话框。当你点击“确定”按钮时,它会执行一个
request.getStartActivityDelegate().startActivityForResult(intent, request.getRequestCode());
您可以从 fb sdk 源代码中查看代码。那么 requestCode 与会话相同(这里没问题)。
当 fb 将您登录到系统时,它将完成他的 facebook.LoginActivity 并在我的活动中回叫我的 onActivityResult。问题是这里的 requestCode 与请求的不同。而且我不知道它为什么以及它来自哪里!
如果我进入我的 fb 帐户,我的应用程序就在那里,这意味着我已经完成了正确的身份验证流程。但由于这个问题,我无法从我的应用程序中获得正确的身份验证。
你知道为什么以及如何解决它吗?
谢谢。
更新流程细节:
这是实际的流程(来自fragment):
session.openForRead(new Session.OpenRequest(fragment).setCallback(statusCallback));
创建后,请求代码(总是)64206 现在 openForRead 流程将调用(最后一部分)
request.getStartActivityDelegate().startActivityForResult(intent, request.getRequestCode());
从 facebook SDK 调用 LoginActivity 并执行客户端/服务器验证/oauth
现在在我的 activity 上调用 onActivityResult(不是在片段上,而是在活动部分上)
我在这里打电话
Session.getActiveSession().onActivityResult(activity, requestCode, resultCode, data);
这里的 requestCode 是 requestCode 129742
这怎么可能?正如我已经说过的,所有这个流程中的问题是返回到 onActivityResult 的 requestCode 与我的 pendingRequest requestCode 不同,并且这个中断(getActiveSession().onActivityResult 返回而不执行代码)是登录客户端部分。
【问题讨论】:
-
你能发布你得到的值是什么吗?如果您未在 OpenRequest 中指定请求代码,它将使用默认代码(不是随机的)。另外,你是从你的活动的 onActivityResult 调用 session.onActivityResult 吗?
-
@MingLi 我已经用完整的流程更新了我的问题。你知道如何解决它吗?
-
原始示例(随 SDK 提供)是否适合您?第一个请求代码(64206)是十六进制的 0xface,这是默认代码(可以在 Session.java 中看到)。第二个(129742)是十六进制的 0x1face,我不确定它来自哪里。如果您可以发布更完整的代码示例来重现该问题,我可以尝试进一步缩小范围。
-
@MingLi,你能缩小这个问题的原因吗?我遇到了同样的问题,除了我使用的数字是 62406(0xface)和 326350(0x4face),但我已经调用 super.onActivityResult 作为这个问题的唯一答案。
-
@GiulioPiancastelli 这已经一岁了,所以您可能发现自己的方式错误。如果其他人(像我一样)偶然发现这个荒谬的错误,我发现错误是在我的活动中的 onActivityResult 方法中,我写了 super.onActivityResult(requestCode, requestCode, data) 而不是 super.onActivityResult(requestCode, resultCode, data) .自动完成! :)
标签: android facebook facebook-android-sdk