2

ファン ページの Facebook タブに iframe をロードしましたが、$_REQUEST["signed_request"] オブジェクトにアクセスできません。これは景品であり、簡単にアクセスできるはずなので、私は混乱しています. Facebook のドキュメントを読んで再読し、Facebook アプリケーションの設定を再確認しましたが、何も機能していません。

isset($_REQUEST['signed_request']

は常に false です。私はFacebook PHP SDKを使用しているので、私も試しました

$facebook->getSignedRequest();

$_REQUEST で print_r を実行しましたが、signed_request が表示されません。$facebook オブジェクトを print_f すると、signedRequest が空であることがわかります

[appId:protected] => XXX
[apiSecret:protected] => XXXXXXXXXXXXXXXXXXXX
[session:protected] => Array

        [access_token] => XXXXXXXXXX|2.h75WqKxcA1xbNPufFvpKQQ__.3600.1304452800.1-726960374|JiO0ZS30SyLaApeqhMtdocK8B_Y
        [base_domain] => XXXXXXXXX
        [expires] => 1304452800
        [secret] => rDF9C_z43_EUFy0Q_e6tyQ__
        [session_key] => 2.h75WqKxcA1xbNPufFvpKQQ__.3600.1304452800.1-726960374
        [sig] => 1971ef7eb8057c7404eae1f82d770ab5
        [uid] => XXXXXXXXXXXXXXX


[signedRequest:protected] => 
[sessionLoaded:protected] => 1
[cookieSupport:protected] => 1
[baseDomain:protected] => 
[fileUploadSupport:protected] => 

[編集] アプリケーションで OAuth 2.0 設定を有効にしています。

4

6 に答える 6

12

OK、これを自分で問題にして、問題を見つけました。

キャンバスまたはタブ ページに 301 リダイレクトがないことを確認してください。私の場合、アプリを「mydomain.com/facebook/tab/」として設定しましたが、私のサイトは「www .mydomain.com/facebook/tab/」に対して 301 を実行していました。

コンテンツが表示され、ビット 301 により signedRequest が null になりました。

アプリの設定で自分のドメインに「www」を追加すると、signedRequest に探していたデータが含まれるようになりました。

于 2011-05-24T21:59:27.837 に答える
6

私はちょうどこの問題を抱えていました。最後にそれを理解しました。[基本] タブのアプリケーション設定で、タブ URL の末尾にスラッシュを追加する必要がありました。

代わりに: http://domain.com/facebook

必要なもの: http://domain.com/facebook/

于 2011-12-14T05:15:00.867 に答える
2

私は同じ問題を抱えていましたそして私はそれを解決します。URLに問題があります。たとえば、アプリのドメインとページタブのURLが同じドメインと一致していることを確認してください。

1)アプリドメイン:example.comページタブURL:example.comが機能します

2)アプリドメイン:example.comページタブURL:example.com/app/が機能します

3)アプリドメイン:fb.example.comページタブURL:fb.example.com/app/が機能します

4)アプリドメイン:fb.example.comページタブURL:example.com/fbは機能しません

于 2011-09-08T17:39:02.833 に答える
1

いくつかの調査の後、これは iframe ソースがホストされている場所と関係があると思われます。

すべてを localhost に移動すると、signed_request が正常に受信されるようになりました。

于 2011-05-05T18:29:55.683 に答える
0

それは古い質問ですが、Googleでこれを見つけました...私にとっての問題は、ページタブのhttps URLに手動でリダイレクトし、$_POST['signed_request']が失われたことでした

于 2013-03-19T14:27:23.953 に答える
0

タブ アプリケーションの設定を編集します。[詳細] タブで、[キャンバス用 OAuth 2.0] が有効になっていることを確認します。

于 2011-05-04T06:38:06.990 に答える