javascript - 可以在webview中使用JS在FBMessenger扩展中获取用户的照片吗?

标签 javascript facebook facebook-graph-api webview

我有一个 Facebook 聊天扩展程序,其中包含一个可通过永久菜单按钮访问的 Webivew。

在 Webview 上,我加载信使 Extensions.js 代码,并且可以查询用户的页面范围 ID、允许的权限等。

我希望能够让用户分享他们的照片,有什么方法可以在我的 Webview 的 JS 中访问该照片吗?或者甚至在服务器上。像这样的东西:

curl -X GET "https://graph.facebook.com/v2.6/<PAGE_SCOPED_USER_ID>?fields=photos,first_name,last_name,profile_pic,locale,timezone,gender&access_token=PAGE_ACCESS_TOKEN"

除了照片字段当然不起作用:

{u'error': {u'code': 100,
  u'fbtrace_id': u'xxxx/xxxxx',
  u'message': u'(#100) Tried accessing nonexisting field (photos) on node type (MessengerPageScopedID)',
  u'type': u'OAuthException'}}

我当前拥有 user_profileuser_messaging 权限。

到目前为止,我只能使用标准字段( listed here ),其中包括名字、姓氏、性别等。

我同意用户需要允许更多权限(并单击添加某些内容),但我想避免像大多数 FB 应用程序那样的非消息身份验证流程。我认为信使的目的是通过这种方式减少摩擦。

我很好奇我是否遗漏了某些内容,或者是否实际上没有办法从 Messenger 聊天扩展程序获取其他 FB 用户数据。

谢谢!

最佳答案

我见过的唯一方法是使用 Login Javascript SDK 在网络上创建您自己的 Facebook 登录页面。和 Messenger Extensions SDK 。基本上,您需要做的就是在 Javascript 中添加这两个 SDK 并创建一个 html 按钮,供用户按下以触发登录。不要忘记将您需要的权限添加到登录 SDK。

您可以通过您的机器人在 URL 按钮中发送指向此登录页面的链接。确保您在该按钮上启用了 Messenger Extensions。当用户单击该按钮时,将打开一个 Web View ,其中包含您创建的 Facebook 登录页面。

如果用户已经登录 Facebook,他们应该只会看到一个页面,要求他们接受新权限。一旦他们接受了权限,页面应该返回 app-scoped-id (和访问 token )以及 page-scoped-id (Messenger id)。您现在已经链接了 app-scoped-id 和 page-scoped-id,并且可以使用此 app-scoped-id 和访问 token 来查询 Graph API 以获取您请求的权限。

将人们从机器人流程中带入 WebView 是很烦人的,但这并不是一个糟糕的用户体验。

关于javascript - 可以在webview中使用JS在FBMessenger扩展中获取用户的照片吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45315485/

相关文章:

javascript - lodash/下划线;比较两个对象并删除重复项

android - 通过 Android 上传的照片在 Facebook 上未获批准

ios - Facebook 的 API 和 App Store 的用户生成内容政策

php - Facebook API 已更改

javascript - Facebook Javascript SDK 在后台添加新的访问 token

JavaScript递归类: undefined method

javascript - 检查背景图像是否已加载

php - 如何获取 Facebook Lead Ads API 中的表单字段?

javascript - 如何在 Dart 中使用 Facebook SDK?

javascript - jQuery 类选择器和 click()