0

以下のコードを使用しても何も起こりません。なぜそうなのか理解できません

function graphStreamPublish(){
var passString = '?[OBJECT]=http://entrancesuccess.net&access_token=' + accesstoken;

 FB.api('/me/[APPNAMESPACE]:[ACTION]' + passString,'post', 
            function(response) {
                showLoader(false);

                if (!response || response.error) {
                    alert('Error occured');
                } else {
                    alert('Post ID: ' + response.id);
                }
            });
        }

しかし、変数「passString」にアクセストークン(YTWYDGFXVVZG456AVGAFV45HGCZXHGFACGFCGFXDG546FXGFXJGFXGFXGXFJXGFXG)をコピーして貼り付けるだけで、すべてが正常に機能し、Facebookのユーザーアクティビティでアクションが公開されます。

例:

  function graphStreamPublish(){
var passString = '?[OBJECT]=http://entrancesuccess.net&access_token=YTWYDGFXVVZG456AVGAFV45HGCZXHGFACGFCGFXDG546FXGFXJGFXGFXGXFJXGFXG';

コードの残りの部分は次のとおりです (必要な場合)。

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

           showLoader(true);

           function updateButton(response) {
                button       =   document.getElementById('fb-auth');
                userInfo     =   document.getElementById('user-info');

                if (response.authResponse) {
                    //user is already logged in and connected
                    FB.api('/me', function(info) {
                        login(response, info);
                    });

                    button.onclick = function() {
                        FB.logout(function(response) {
                            logout(response);
                        });
                    };
                } else {
                    //user is not connected to your app or logged out
                    button.innerHTML = 'Login';
                    button.onclick = function() {
                        showLoader(true);
                        FB.login(function(response) {
                            if (response.authResponse) {
                                FB.api('/me', function(info) {
                                    login(response, info);
                                });    
                            } else {
                                //user cancelled login or did not grant authorization
                                showLoader(false);
                            }
                        }, {scope:'publish_stream,public_action'});     
                    }
                }
            }

            // run once with current status and whenever the status changes
            FB.getLoginStatus(updateButton);
            FB.Event.subscribe('auth.statusChange', 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);
        }());


        function login(response, info){
            if (response.authResponse) {
                 var accessToken                                 =            response.authResponse.accessToken;

                userInfo.innerHTML                             = '<img src="https://graph.facebook.com/' + info.id + '/picture">' + info.name
                                                                 + "<br /> Your Access Token: " + accessToken;
                button.innerHTML                               = 'Logout';
                showLoader(false);
                document.getElementById('other').style.display = "block";
            }
        }

        function logout(response){
            userInfo.innerHTML                             =   "";
            document.getElementById('debug').innerHTML     =   "";
            document.getElementById('other').style.display =   "none";
            showLoader(false);
        }
4

1 に答える 1

0

accesstokenあなたの関数には変数がないと思いますgraphStreamPublish

varfunction でキーワードを使用してloginいるため、ローカル変数になります。そのため、その関数が完了すると内容が破棄されます。

なしで割り当てを行うことができvar、それはグローバル変数になり、graphStreamPublishアクセスできるはずです。

しかし、JS SDK はバックグラウンドで単独でアクセス トークンを完全に渡すことができるため、通常はアクセス トークンを明示的に渡す必要はまったくありません。

于 2012-07-14T12:02:06.067 に答える