【问题标题】:FB.api('/me') always giving error code:2500 in phonegap androidFB.api('/me') 在 phonegap android 中总是给出错误代码:2500
【发布时间】:2012-04-05 10:27:53
【问题描述】:

我正在使用 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);
                                         });
                   }
                   });

            }

【问题讨论】:

    标签: android facebook phonegap-plugins


    【解决方案1】:

    您需要访问令牌来检索比基本用户信息更多的详细信息。检查您是否在Debug Tool 中拥有正确的访问令牌,并确保您已设置所有需要的权限permission

    将 ConnectPlugin 中的“getResponse”方法中的“会话”更改为“authResponse”后问题解决

    【讨论】:

    • 感谢您的回复,我在调试工具中检查了我的访问令牌,您提到它为我提供了正确的详细信息。但是在我所做的事情中,它给出了同样的错误。你能告诉我“FB.api”从哪里获取我的访问令牌吗?我尝试在此链接中给出的登录后立即检索用户信息,但再次发生相同的错误。 developers.facebook.com/docs/reference/javascript/FB.login
    • 检查此页面上的权限developers.facebook.com/docs/reference/javascript/FB.login 。您需要在 scope: 'email,user_likes' 定义正确的范围。与您在调试工具中定义的范围相同。
    • 我也这样做了。我将在问题中发布我的代码。如果我在这方面犯了任何错误,请告诉我。
    • FB.api 方法从哪里获取我的访问令牌
    • 您需要在 fb.login 函数中调用 FB.api。请参阅此线程以获取类似的实现facebook.stackoverflow.com/questions/4758770/…
    【解决方案2】:

    在我将 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-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      相关资源
      最近更新 更多