ios - 获取 xmpp_login 访问 token 在 Facebook iOS SDK 中不起作用

标签 ios facebook xmpp access-token xmppframework

<小时/>

我正在尝试获取有效的 accessToken,以便从我的 iOS 应用程序通过 XMPP 发送消息。

我正在使用这个库( https://github.com/KanybekMomukeyev/FacebookChat ),一切似乎都运行良好,但它使用旧的 xmpp 库和旧的 Facebook sdk。

在我的应用中,我使用最新的 Facebook SDK,为了获得 xmpp_login 权限,我执行以下操作:

[FBSession openActiveSessionWithReadPermissions:@[@"xmpp_login"] allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
    ...
}];

我没有收到任何错误,但当我尝试将生成的 accessToken 与 xmpp 库一起使用时,我继续收到无身份验证错误

经过深入研究,我最终检查了 facebook 在新 SDK(我的应用程序)和旧 SDK(Facebook 聊天)中用于请求 token 的 URL。

我的:

https://m.facebook.com/v2.0/dialog/oauth?sdk_version=3.15.0&response_type=token&return_scopes=true&legacy_override=v2.0&e2e={"init":1404191289978}&scope=xmpp_login&client_id=274849106003593&state ={"is_open_session":true,"is_active_session":true,"com.facebook.sdk_client_state":true,"3_method":"browser_auth","0_auth_logger_id":"72796574-5B5C-4EF3-9B0B-F9AC376E2DC4"}&redirect_uri= fb274849106003593://authorize&sdk=ios&display=touch

他们:

https://m.facebook.com/dialog/oauth?type=user_agent&display=touch&redirect_uri=fb274849106003593://authorize&sdk=ios&scope=xmpp_login&client_id=274849106003593

我不太确定为什么一个有效而另一个无效,在这两种情况下我都会获得 accessToken,但如果我使用第一个 URL 请求,XMPP 不会进行身份验证。

有谁知道为什么会发生这种情况或者权限中还需要包含什么内容?

PS:顺便说一句,如果您尝试第二个(旧方式)URL,则任何后续请求都将有效,直到 token 过期。

最佳答案

根据 Facebook ( https://developers.facebook.com/docs/apps/changelog ) 的说法,他们的 API v2.0 删除了对 xmpp_login 权限的访问,这就是它不起作用的原因。

一个快速解决方法是强制较新的 SDK 使用 API v1.0。

[FBSettings enablePlatformCompatibility:YES];

API v1.0 将于 2015 年 4 月 15 日之前可用,Facebook 声明如下:

处于非事件状态或创建日期在 2014 年 4 月 30 日或之后的应用程序将无法调用 API v1.0。他们必须使用 v2.0。

所以 xmpp 不再是一个可行的解决方案。

关于ios - 获取 xmpp_login 访问 token 在 Facebook iOS SDK 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24503064/

相关文章:

ios - Swift 中一个垂直 ScrollView 中的多个水平 ScrollView ?

android - Asmack中的注册方法

ruby-on-rails - 自动化 facebook/twitter 帖子

Facebook 扩展许可

ruby-on-rails - 哪些 Ruby gem 支持 Facebook API?

java - Smack api 和 Openfire 服务器存在错误

xmpp - 在 openfire 上启用 http-bind

ios - 访问相机和照片库

ios - 以编程方式添加的 ViewController 看起来已移动/转换(iOS、swift、 Storyboard)

ios - 避免 uiwebview 过多的垂直滚动