2

私がホストしているページ タブ アプリがあります。http と https の両方がサポートされています。期待どおりに signed_request パッケージを受け取りましたが、デコードした後、ページ情報が含まれていません。そのデータは単に欠落しています。

私は、facebook、私のホストされたサイト、さらには 'go between' -- facebook の静的ページハンドラーの間で同様のスキーム (https) が使用されていることを確認しました。

また、ページ タブをサポートする新しいアプリケーションを作成しましたが、同じ結果が得られました。signed_request にページ情報がないだけです。

人々が考えることができる他の原因はありますか?

このリンクを使用して、アプリをページ タブに追加します。

https://www.facebook.com/dialog/pagetab?app_id=176236832519816&next=https://www.intelligantt.com/Facebook/application.html

これが私が使用しているページタブです(注:権限が必要です):

https://www.facebook.com/pages/School-Auction-Test-2/154869721351873?id=154869721351873&sk=app_176236832519816

私が受け取っているデコードされた signed_request は次のとおりです。

{"アルゴリズム":"HMAC-SHA256","コード":!削除!,"issued_at":1369384264,"user_id":"1218470256"}

5/25 更新 - キャンバス アプリの URL がページ タブの URL と一致していない可能性があると考えたため、両方の末尾にスラッシュがあるかどうかのシナリオを数時間かけて調べました。両方とも末尾に ? かどうか、クエリ パラメータを使用するかどうか。

また、ページ タブをキャンバス アプリの URL とページ タブの URL に作成するときに、「次の」値を変更してみました。

どちらのカウントでも成功しません。

signed_request に「code」値が表示されているため、Facebook が URL と一致しなかったか、2 番目の要求をキャプチャしていることを意味する場所を読みました。ただし、私が行ったすべての URL 順列を指定したところ、URL は一致すると思います。また、'auth.authResponseChange' にサブスクライブしました。

私に評判があれば、これに報奨金を追加します。

ありがとう。

4

3 に答える 3

1

このまったく同じ問題に約 5 時間費やし、間違った以前の回答を投稿しました。契約は次のとおりです。

ご指摘のとおり、タブが純粋な JavaScript で静的 html ページ (*.htm 拡張子付き) として実装されている場合、signed_request にはページ データがないように見えます。

まったく同じページでまったく同じテストを繰り返しましたが、html ページ (js を含む) を Perl スクリプト (*.cgi 拡張子付き) でラップしました...そして出来上がり、signed_request にはページ情報があります。

紛らわしいですが (Facebook の設計上の選択としてより適切に文書化する必要があります)、スコープ内にシークレットキーを配置せずに (したがって、潜在的なハッカーにそれを明らかにすることで) Javascript 内で signed_request を完全に検証することは不可能であるため、これはある程度の意味があるかもしれません。 .

于 2013-06-25T05:56:51.607 に答える
0

PHP SDK を使用すると、はるかに簡単になりますが、JavaScript を使用したいだけの場合は、次の方法が役立つかもしれません。

Facebook 登録 - Javascript を使用したデータ/署名付きリクエストの読み取り

また、これを確認することもできます: https://github.com/diulama/js-facebook-signed-request

于 2013-05-29T09:30:24.867 に答える