2012-10-30 58 views
0

我想從Facebook的sdk訪問用戶信息,但我不斷收到此錯誤。Facebook Android 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) { 
     } 
}); 

有時候我也得到了正確的答案。我認爲這是由於訪問令牌到期,如果我是正確的。 所以你們可以告訴我如何擴展訪問令牌,儘管我在onResume方法中使用了這個facebook.extendAccessTokenIfNeeded(this, null);方法。

如何解決這個問題?

+0

從經驗來看,它與你的代碼無關。您每天可以通過您的應用發佈的消息數量有限。所以如果你超過這個限制,你會看到這種錯誤。 – GoCrazy

+0

對於此錯誤,您必須關閉會話(在v3b中)或刪除訪問令牌(在v2中),並讓用戶重新進行身份驗證。這是必要的,因爲他們已經更改了密碼,並且與之前密碼關聯的任何訪問令牌都將無效,並且無法擴展。 –

回答

0

extendAccessTokenIfNeeded和extendAccessTokenIfNeeded方法都要求本地Facebook應用程序在本地安裝。

(我不知道,如果你正在使用v2或SDK的V3B,但它記錄在這裏https://developers.facebook.com/docs/reference/android/3.0/Facebook#extendAccessToken(Context,%20ServiceListener))

你看到的行爲......是在模擬器中或真實設備?如果是前者,你可以從SDK的v3b安裝本地Facebook應用作爲APK,可以在這裏獲得:https://developers.facebook.com/android

+0

我在真實設備上使用它。 – Mj1992

相關問題