2017-08-23 14 views
0

最終編集 これはバグでした。 reportを提出した後、それに対処しました。私は私のFacebookのメッセンジャーボットのWebViewの中でユーザーIDを取得しようとしています共有時にFacebook webviewが失敗する

EDIT

。モバイルではうまく動作しますが、デスクトップ(ウェブ)では失敗します。これは当てはまりません。拡張SDKのため

デスクトップのサポート:

Messenger 2.1 release statementには、以下の引用を与えます。この新機能は、デバイス間で一貫性のある体験を作成、モバイルやウェブ上の機能を拡張します。今や、のユーザーIDのような機能とモバイルでしかアクセスできない共有機能は、デスクトップ上でも利用可能になります。これにより、開発者はウェブビューやチャットの拡張機能を実装する際のテストやデバッグが容易になります。

メッセンジャー拡張機能でユーザーIDを取得するには、getUserId()getContext()の2つの方法があります。デスクトップではgetUserId()は利用できないと書かれていますが、getContext()は言及されていません。

getContext()呼び出しがデスクトップで利用できないと記載されているbug reportがあります。

ユーザーIDを取得する方法は他にありません。それはどうやってやろうとしていますか?

キッカーとして、元の質問を読むと、getContext()は実際にはデスクトップ(ウェブ)上で動作していることがわかりますが、ロボットが直接送信したリンクからウェブビューを開いた場合にのみ表示されます。

ORIGINAL

私はWebViewのを使ってFacebookの(メッセンジャー)ボットに取り組んでいます。 すべてのタスクの最も基本的なのは、userIdを取得することです。

これは私が大きな問題にぶつかったところです。それを徹底的に調査した結果、私は事例と結果を提示しました。

  • ケース1:私のアプリからweb_urlボタン(ウェブビューを開く)と共有ボタンが付いた一般的なテンプレートが送信されます。

    すべて素晴らしいです。私はユーザーIDを取得します。

  • ケース2:メッセージの共有からcase 1をクリックし、自分と自分のアプリと共有します。メッセージスレッド(私自身に、またはアプリへI)getContext()コールリターンエラー2018166 Permission not valid to call the SDK API.askPermission()戻り2018154 Messenger Extensions unexpected error.

  • ケース3のいずれかから

    :私はbeginShareFlow()を使用してWebViewの内部から共有をクリックして、自分と共有し、ボット。

    case 2

  • ケース4と同じ

    :ここにキッカーです。

    Androidからのcase 2またはcase 3からwebviewを有効にすると、私のユーザーIDが表示されます。

  • ケース5:以前にアプリとやりとりした友だちと共有する。

    この友だちは、アンドロイドが動作していないデスクトップからWebviewを起動すると失敗します。

  • ケース6:ではなく、がボットとやり取りしている友達と共有しています。

    がデスクトップで動作しない(ボタンで共有するか、またはbeginShareFlow())、動作します。

だから、このすべてを書き出した後、パターンは次のとおりです。アンドロイドの

  • 、WebViewの共有が期待通りに動作します。私は、彼らがbeforボットと相互作用しているかどうかをユーザーIDを取得することができますかない。
  • デスクトップでは、webviewがユーザーIDを提供する唯一の時間は、webviewリンクのメッセージがボットによって送信されたときです。一度それがユーザによって共有されると、webviewはまだ開きますが、文脈を提供しません。

私はgetContextを使用してユーザーIDを取得し、具体的にはデスクトップでは動作しないと言われているgetUserIdではありません。

私はこれについて何かできることはありますか?私はボットのWebviewをデスクトップとモバイルの両方で動作させたいと思います。

2要求されたよう

、WebViewの中に共有するためのペイロードがある私は、回避策を考えることができますが、それは理想的な

EDITほど遠いです:

{ 
    "attachment":{ 
    "type":"template", 
    "payload":{ 
     "template_type":"generic", 
     "elements": [{ 
     "title":"Testing webview", 
     "default_action":{ 
      "type":"web_url", 
      "webview_height_ratio": "full", 
      "messenger_extensions": true, 
      "url":"https://plenty.life/webview" 
     }, 
     "buttons":[{ 
      "type":"web_url", 
      "webview_height_ratio": "full", 
      "messenger_extensions": true, 
      "url":"https://plenty.life/webview", 
      "title":"Test" 
     }] 
     }] 
    } 
    } 
} 
+0

さらに調査したところ、このバグレポートhttps://developers.facebook.com/bugs/714789048704923/が見つかりましたが、ユーザーIDを取得するための代替案は明らかにされていません。 – Andrey

+0

これはAndroidのみ、またはWebクライアントで発生していますか? – amuramoto

+0

すべてがモバイル(iOSとAndroidアプリ)では正常に動作しますが、デスクトップ(ウェブ)では失敗します – Andrey

答えて

0

はこれを試してみてください...

<script> 
window.extAsyncInit = function() { 
    // the Messenger Extensions JS SDK is done loading 
    console.log("using getUserId in",window.name) 

    MessengerExtensions.getUserID(function success(uids) { 
    // User ID was successfully obtained. 
     var psid = uids.psid; 
     console.log(psid); 
     document.getElementById("userId").innerText="your User Id Is "+psid; 
    }, function error(err, errorMessage) {  
    // Error handling code 
    console.log("some Error",err,errorMessage) 
    }); 
    MessengerExtensions.getContext('<appID>', 
     function success(result){ 
      console.log("success",result) 
     }, 
     function error(result){ 
      console.log("error",result) 
     } 
    ); 
}; 
</script> 
関連する問題