0

Facebookプラグインを使用して、正常に機能しているユーザーのログインとログアウトを行っています。問題は、関数FB.api('/ me')を使用してログインしたユーザーの詳細を要求すると、常に次のエラーが発生することです。

      {"message":"An active access token must be used to query information about the current user.","type":"OAuthException","code":2500} 

デバッグモードを使用して、応答のPluginResult(pr)とJSONObjectを確認しました。JSONObjectには、必要なユーザー情報が含まれています。間違っている場所を取得できません。

  Plz help......

私のコード:

           function login() {
            FB.login(function(response) {
               if (response.session) {
                 console.log('Welcome!  Fetching your information.... ');
                 FB.api('/me', function(response) {
                   console.log('Good to see you, ' + JSON.stringify(response) + '.');
                 });
               } else {
                 console.log('User cancelled login or did not fully authorize.');
               }
             },{scope: 'email,user_likes'});
        }

       function logout() {
            FB.logout(function(response) {
                           console.log(localStorage.getItem("user_fb_log_status"));
                           localStorage.setItem("user_fb_log_status","LOGGED_OUT");

                      alert('logged out');
                      });
        }

The above code is working fine to login and logout the user. Below is the code i used to get the user details,

        function me() {
                FB.api('/me', { fields: 'id, name, picture' },  function(response) {
                   if (response.error) {
                   alert(JSON.stringify(response.error));
                   } else {
                   var data = document.getElementById('data');
                   fdata=response.data;
                   console.log("fdata: "+fdata);
                   response.data.forEach(function(item) {
                                         var d = document.createElement('div');
                                         d.innerHTML = "<img src="+item.picture+"/>"+item.name;
                                         data.appendChild(d);
                                         });
                   }
                   });

            }
4

2 に答える 2

3

基本的なユーザー情報よりも多くの詳細を取得するには、アクセストークンが必要です。Debug Toolに正しいアクセストークンがあるかどうかを確認し、 すべてのアクセス許可が必要なアクセス許可を設定していることを確認します

ConnectPluginの「getResponse」メソッドの「session」を「authResponse」に変更すると問題が解決しました

于 2012-04-05T16:26:38.590 に答える
1

ConnectPlugin.javaで次のメソッドを次のように変更した後、FB.apiメソッドは、ユーザーの詳細を取得してFacebookにフィードを投稿するために正常に機能しています。

  public JSONObject getResponse() {
    String response = "{" + "\"status\": \""
            + (facebook.isSessionValid() ? "connected" : "unknown") + "\","
            +
            // "\"session\": {" + "\"access_token\": \""
            // + facebook.getAccessToken() + "\"," + "\"expires\": \""
            // + facebook.getAccessExpires() + "\","
            // + "\"session_key\": true," + "\"sig\": \"...\","
            // + "\"uid\": \"" + this.userId + "\"" +

            "\"authResponse\": {" +

            "\"accessToken\": \"" + facebook.getAccessToken() + "\"," +

            "\"expiresIn\": \"" + facebook.getAccessExpires() + "\"," +

            "\"session_key\": true," +

            "\"sig\": \"...\"," +

            "\"userId\": \"" + this.userId + "\"" +

            "}" + "}";

    try {
        return new JSONObject(response);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return new JSONObject();
}
于 2012-04-16T06:26:56.583 に答える