我正在尝试从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
。
如何解决这个问题?
答案 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