Facebook Android SDK。验证访问令牌时出错

时间:2012-10-30 16:51:13

标签: android facebook

我正在尝试从facebook sdk访问用户信息。但我一直收到此错误。

{"error":{"message":"Error validating access token: The session has been invalidated because the user has changed the password.","type":"OAuthException","code":190,"error_subcode":460}}

这是一个调用,它返回oncomplete函数的response参数中的错误。

mAsyncRunner.request("me", new RequestListener() {
        @Override
        public void onComplete(String response, Object state) {
            Log.d("Profile", response);
            String json = response;    //<-- error in response
            try {

                JSONObject profile = new JSONObject(json);
                MainActivity.this.userid   = profile.getString("id");
                new GetUserProfilePic().execute();
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(), "Name: " + MainActivity.this.userid, Toast.LENGTH_LONG).show();
                    }

                });

            } catch (JSONException e) {
                e.printStackTrace();
                Log.e("jsonexception",e.getMessage());
                facebook.extendAccessTokenIfNeeded(MainActivity.this, null);
                GetUserInfo();
            }
        }
        @Override
        public void onIOException(IOException e, Object state) {
        }

        @Override
        public void onFileNotFoundException(FileNotFoundException e,
                Object state) {
        }

        @Override
        public void onMalformedURLException(MalformedURLException e,
                Object state) {
        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {
        }
});

有时我也得到了正确的答案。我认为这是因为如果我是正确的,访问令牌到期。 所以你们可以告诉我如何扩展访问令牌,尽管我在活动的facebook.extendAccessTokenIfNeeded(this, null);方法中使用了这个onResume

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

extendAccessTokenIfNeeded和extendAccessTokenIfNeeded方法都需要在本地安装本机Facebook应用程序。

(我不知道你是使用SDK的v2还是v3b,但是这里记录了https://developers.facebook.com/docs/reference/android/3.0/Facebook#extendAccessToken(Context,%20ServiceListener))

您所看到的行为......是在模拟器中还是在真实设备中?如果是前者,您可以从SDK的v3b将本机Facebook应用程序安装为APK,可在此处获取:https://developers.facebook.com/android