Android Facebook SDK 3.0 auth

Android Facebook SDK 3.0 auth,第1张

概述我实际上是在关注facebooksdk示例中的SessionLoginFragment.java示例.我真正不明白的是:我做的时候session.openForRead(newSession.OpenRequest(fragment).setCallback(statusCallback));将我的用户登录到Facebook并询问基本读取权限(仅测试集成)它根本不起作用.我用调试

我实际上是在关注facebook sdk示例中的SessionLoginFragment.java示例.

我真正不明白的是:

我做的时候

session.openForRead(new Session.OpenRequest(fragment).setCallback(statusCallback));@H_404_11@

将我的用户登录到Facebook并询问基本读取权限(仅测试集成)它根本不起作用.

我用调试器挖了一下,然后按照路径行进.如果你没有将requestCode放到会话的OpenRequest中,它会给它一个随机的(这没关系).

openForRead(我的实际会话处于CREATED状态)将创建权限对话框.当您点击“确定”按钮时,它将执行一个

request.getStartActivityDelegate().startActivityForResult(intent, request.getRequestCode());@H_404_11@

您可以从fb sdk源代码中看到代码.请求代码与会话相同(这里没问题).

当fb登录系统时,它将完成他的facebook.LoginActivity并在我的活动中回复我的onActivityResult.问题是这里requestCode与请求的不同.我不知道它为什么以及它来自哪里!

如果我进入我的fb帐户,我的应用程序就在那里,这意味着我已经完成了正确的身份验证流程.但是由于这个问题,我不会从我的应用程序中正确地进行身份验证.

你知道为什么以及如何解决它?

谢谢.

流量细节更新:

这是实际流程(来自片段):

session.openForRead(new Session.OpenRequest(fragment).setCallback(statusCallback));@H_404_11@

创建后,请求代码(始终)为64206
现在openForRead流程将调用(最后部分)

request.getStartActivityDelegate().startActivityForResult(intent, request.getRequestCode());@H_404_11@

从facebook SDK调用LoginActivity并执行客户端/服务器验证/ oauth

现在,我的活动被称为onActivityResult(不在片段上,而是在活动部分)

在这里我打电话

Session.getActiveSession().onActivityResult(activity, requestCode, resultCode, data);@H_404_11@

这里requestCode是requestCode 129742

这怎么可能?正如我已经说过的,所有这一流中的问题是返回onActivityResult的requestCode与pendingRequest requestCode不同,并且这个中断(getActiveSession().onActivityResult返回而不执行代码)登录客户端部分.

解决方法:

我遇到了同样的问题,除了在我的情况下违规的requestCode是326350(0x4face).我确实在调用super.onActivityResult,所以workaround proposed by Eric Savage已经到位但效果不佳.最奇怪的是,这些东西在几周前就已经发挥作用了,并且在没有自己升级任何东西的情况下出现了违规行为(Facebook SDK版本,AndroID版本,支持库版本,甚至我正在开发/测试的手机,都是就像我工作时一样).

然而,Eric的答案包含其他有趣的提示,我利用它来使我的代码再次工作.基本上,我没有将整个requestCode传递给Session.onActivityResult,而是将最低16位切换为仅传递.

@OverrIDeprotected voID onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    Session session = Session.getActiveSession();    int sanitizedRequestCode = requestCode % 0x10000;    session.onActivityResult(this, sanitizedRequestCode, resultCode, data);}@H_404_11@

我相信这是一个应该在Facebook SDK中修复的错误,并且会坚持要为下一个版本修补它.

总结

以上是内存溢出为你收集整理的Android Facebook SDK 3.0 auth全部内容,希望文章能够帮你解决Android Facebook SDK 3.0 auth所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1098234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存