我想從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);
方法。
如何解決這個問題?
從經驗來看,它與你的代碼無關。您每天可以通過您的應用發佈的消息數量有限。所以如果你超過這個限制,你會看到這種錯誤。 – GoCrazy
對於此錯誤,您必須關閉會話(在v3b中)或刪除訪問令牌(在v2中),並讓用戶重新進行身份驗證。這是必要的,因爲他們已經更改了密碼,並且與之前密碼關聯的任何訪問令牌都將無效,並且無法擴展。 –