0

我正在尝试从 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}}

这是返回给我responseoncomplete 函数参数中的错误的调用。

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方法中使用了它。

如何解决这个问题?

4

1 回答 1

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

于 2012-10-30T18:19:35.963 回答