FB.api('/me') всегда дает код ошибки: 2500 в телефонной щели Android

Я использую плагин 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);
                                         });
                   }
                   });

            }

person seshu450    schedule 05.04.2012    source источник


Ответы (2)


Вам нужен токен доступа для получения более подробной информации, чем основная информация о пользователе. Убедитесь, что у вас есть правильный токен доступа в Инструменте отладки, и убедитесь, что у вас установлены все требуемые разрешения. разрешение.

Проблема решена после изменения «сеанса» в методе «getResponse» в ConnectPlugin на «authResponse».

person gauravtechie    schedule 05.04.2012
comment
Спасибо за ваш ответ, я проверил свой токен доступа в DEBUG TOOL, о котором вы упомянули, что он дает мне правильные данные. Но в моем, что бы я ни делал, это дает ту же ошибку. Можете ли вы сказать мне, откуда FB.api берет мой токен доступа? Я попытался получить информацию о пользователе сразу после входа в систему, как указано в этой ссылке, но снова возникает та же ошибка. developers.facebook.com/docs/reference/javascript/FB.login - person seshu450; 09.04.2012
comment
Проверьте разрешения на этой странице developers.facebook.com/docs/reference/javascript/ FB.логин . Вам нужно определить правильную область видимости: 'email,user_likes'. Та же область, которую вы определяете в инструменте отладки. - person gauravtechie; 10.04.2012
comment
Я тоже это сделал. Я опубликую свой код в вопросе. Пожалуйста, позвольте мне, если я сделал какие-либо ошибки в этом. - person seshu450; 10.04.2012
comment
Откуда метод FB.api берет мой токен доступа - person seshu450; 10.04.2012
comment
Вам нужно вызвать FB.api внутри функции fb.login. См. этот поток для аналогичной реализации facebook.stackoverflow.com/questions/4758770/ - person gauravtechie; 10.04.2012
comment
Большое спасибо @gauravtechie. Это сработало после того, как я изменил сеанс в методе getResponse в ConnectPlugin на authResponse - person seshu450; 10.04.2012
comment
Удовольствие. Обновил мой ответ правильным решением. Пожалуйста, закройте это. Спасибо. - person gauravtechie; 10.04.2012

Метод FB.api отлично работает для меня, чтобы получить информацию о пользователе и опубликовать канал в facebook после того, как я изменю следующий метод в ConnectPlugin.java следующим образом.

  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();
}
person seshu450    schedule 16.04.2012