0

FB.loginを使用してログインする場合、response.authResponseには、id、admin、likedのページプロパティが含まれません。

ただし、PHPでページをロードすると、署名されたリクエスト(getSignedRequest)にページが含まれます。

私はそれがjavascriptを使用して大丈夫に動作するために使用すると思いました。

問題は、主にJavaScriptアプリを開発する場合、サーバーを使用しない限りページを検出できないことです。サーバーが署名されたリクエストを解析できるように、javascriptログインを使用した後に更新を要求する。

何か案は?

4

3 に答える 3

0

Javascript apiを使用して署名されたリクエストを取得する場合FB.getLoginStatus()は、signed_requestを取得するためにそれを行うことができます。これは、ユーザーがアプリ/ウェブサイトにログインしている場合です。ログインしていない場合は、FB.loginメソッドを呼び出すことができます。私はこの方法を試しました:

<script type="text/javascript">

            window.fbAsyncInit = function() {
                FB.init({ appId: 'YOUR_APP_ID', //change the appId to your appId
                    status: true, 
                    cookie: true,
                    xfbml: true,
                    oauth: true});



               function updateButton(response) {

                 console.log(response); 

                 if(response.status == 'connected'){
                     //alert('Yes Connected');

                    console.log(response.authResponse.signedRequest);  
                    //This log can be seen through the firebug extention in console tab 
                 }
                 else{
                     alert('Not Connected');
                 }

                }

                // run once with current status and whenever the status changes
                FB.getLoginStatus(updateButton);

            };

            (function() {
                var e = document.createElement('script'); e.async = true;
                e.src = document.location.protocol 
                    + '//connect.facebook.net/en_US/all.js';
                document.getElementById('fb-root').appendChild(e);
            }());



        </script>
于 2012-07-31T06:23:38.017 に答える
0

サーバーが署名されたリクエストを解析できるように、JavaScript ログインを使用した後に更新が必要です。

必ずしも「更新」する必要はありません。AJAX リクエストでも同様です。

何か案は?

あなたの状況でサーバーへのラウンドトリップが実行できない場合は、クライアント側で署名付きリクエストを解析することもできます.base64デコードの場合、最新のブラウザはメソッドwindow.atobを知っており、古いブラウザの場合は、スクリプトを取得してWebから実行できます. ただし、それは実際に検証せずに、署名されたリクエストをデコードするだけです。それも行う必要がある場合は、アプリのシークレットが必要になるため、サーバー側のアプローチを使用する必要があります。

于 2012-06-29T08:02:13.117 に答える
0

できません。Facebook は、署名されたリクエスト get 変数の一部として、ページ タブ情報のみをサーバーに送信します。

于 2012-08-05T00:48:16.290 に答える