2017-07-26 16 views
2

Facebookのチャット拡張機能があり、永続的なメニューボタンからWebivewにアクセスできます。webviewでJSを使用してFBメッセンジャー拡張でユーザーの写真を取得できますか?

私はメッセンジャーExtensions.jsコードをロードし、私は、ユーザーのページスコープIDを照会することができWebViewの上で、許可されたアクセス権など

私は、ユーザのシェアに自分の写真を聞かせできるようにしたいのですがWebviewでJSのアクセス権を得る方法はありますか?またはサーバー上でさえも。ような何か:photosフィールドを除く

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アプリのようにメッセンジャー以外の認証フローを避けたかったのです。私はメッセンジャーのポイントがそのように摩擦を少なくすることだと考えました。

何か不足している場合や、実際にメッセンジャーチャットの拡張機能から他のFBユーザーデータを取得する方法がない場合は不思議です。

ありがとうございます!

+0

アカウントリンクを使用する必要があります。ユーザーにあなたのapp user_photos権限を許可させる – WizKid

+0

[account linking](https://developers.facebook.com/docs/messenger-platform/account-linking/v2.10)のガイドが見つかりましたが、私は'user_photos'パーミッションに関するものは何ですか?または一般的に特定の許可を求めることができます。 – lollercoaster

+0

あなたはFacebookログインを使用してユーザーのログインを持っている必要があります。次に、アカウントリンクを使用して、ユーザーIDとページスコープのユーザーIDを接続します。 – WizKid

答えて

2

私がこれを行ったのを見る唯一の方法は、Login Javascript SDKMessenger Extensions SDKの両方を使って自分のFacebookログインページをウェブ上に作成することです。基本的には、これらのSDKを両方ともJavascriptに追加し、ユーザーがログインをトリガーするためのhtmlボタンを作成するだけです。必要な権限をログインSDKに追加することを忘れないでください。

このログインページへのリンクは、あなたのボットからURLボタンで送信できます。そのボタンでMessenger拡張機能を有効にしてください。ユーザーがボタンをクリックすると、作成したFacebookログインページが表示されます。

ユーザーが既にFacebookにログインしている場合は、新しい権限を受け入れるように求めるページが表示されます。アクセス許可を受け入れたら、ページはapp-scoped-id(およびアクセストークン)とページスコープid(メッセンジャーID)の両方を返します。これでapp-scoped-idとpage-scoped-idがリンクされました。このapp-scoped-idとaccessトークンを使用して、要求された権限をGraph APIに問い合わせることができます。

これは、ボットの流れから人々をウェブビューに導かなければならないのは面倒ですが、それはひどいユーザーエクスペリエンスではありません。

関連する問題