2017-07-26 100 views
2

我有一个Facebook聊天扩展程序,可通过持久菜单按钮访问Webivew。可能在webview中使用JS获取FB messenger扩展中的用户照片?

在我加载信使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" 

除了photos场不场的工作:

{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用户数据。

谢谢!

+0

您需要使用帐户链接。并让用户授予您的应用user_photos权限 – WizKid

+0

我在[帐户关联](https://developers.facebook.com/docs/messenger-platform/account-linking/v2.10)上找到了一个指南,但我没有看到有关'user_photos'权限的任何信息?或者一般要求特定的权限。 – lollercoaster

+0

您需要让用户使用Facebook登录登录。然后您使用帐户链接将其用户标识与其页面范围的用户标识相关联。 – WizKid

回答

2

我看到完成的唯一方法是使用Login Javascript SDKMessenger Extensions SDK在网络上创建您自己的Facebook登录页面。基本上所有你需要做的就是在Javascript中添加这两个SDK,并创建一个HTML按钮供用户按下来触发登录。不要忘记将所需的权限添加到登录SDK。

您可以通过您的机器人在URL按钮中发送一个链接到这个登录页面。确保您在该按钮上启用Messenger Extensions。当用户点击按钮时,webview将打开您创建的Facebook登录页面。

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

令人讨厌的是不得不将人们带出机器人流程并进入web视图,但这不是一个糟糕的用户体验。

相关问题