문제가 생겨서 왜 그런지 모르겠지만 당신이 나를 도울 수 있기를 바랍니다!Facebook 그래프 Api OAuthException하지만 액세스 토큰이 유효합니다
페이스 북 그래프 API를 사용하는 Android 앱을 개발 중입니다. 읽기 허용 "user_likes"를 사용합니다. 이 요청을 할 때 : "me/likes" 모든 것이 잘 동작합니다. 하지만 난이 작업을 수행 할 때? 나를/좋아하는 분야 = 이벤트 {커버}, 이름
나는 OAuthException를 얻을. ERRORMESSAGE은 :
- 내가 필요한 모든 권한이있는 유효한 액세스 토큰을 얻을 : 활성 액세스 토큰은 현재 사용자 결론적으로
에 대한 정보를 조회하는 데 사용되어야합니다.
- 저는 페이스 북의 개인 정보 취급 방침이 어떤 역할을해서는 안되는 내 앱 관리자입니다! 이
me/likes?fields=events
이 작동하지 않습니다
- 요청
me/likes
작동하지만
!응답 내가 얻을 :
그래서 난 내 액세스 토큰 디버그하는 :{Response: responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 2500, errorType: OAuthException, errorMessage: An active access token must be used to query information about the current user.}, isFromCache:false}
발행 : 1,420,803,216 (4 시간 전)
만료 : 1,425,987,216 (약 2 개월)
유효 : True
출처 : 모바일 웹 Faceweb
스코프 : public_profile, basic_info, 이메일, user_birthday, USER_LOCATION는, user_likes, 내 액세스 토큰이 너무 많은 범위를 가지고 왜 정말 이해가 안
가 user_friends? 방금 "user_likes"를 설정했습니다! 내가 잘못 뭘하는
private LoginButton loginBtn;
private TextView username;
private UiLifecycleHelper uiHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uiHelper = new UiLifecycleHelper(this, statusCallback);
uiHelper.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
username = (TextView) findViewById(R.id.username);
loginBtn = (LoginButton) findViewById(R.id.fb_login_button);
loginBtn.setReadPermissions(Arrays.asList("user_likes"));
loginBtn.setUserInfoChangedCallback(new UserInfoChangedCallback() {
public void onUserInfoFetched(GraphUser user) {
if (user != null) {
username.setText("You are currently logged in as "
+ user.getName());
} else {
username.setText("You are not logged in.");
}
}
});
}
private Session.StatusCallback statusCallback = new Session.StatusCallback() {
public void call(Session session, SessionState state,
Exception exception) {
if (state.isOpened()) {
Log.d("MainActivity", "Facebook session opened.");
} else if (state.isClosed()) {
Log.d("MainActivity", "Facebook session closed.");
}
}
};
@Override
public void onResume() {
super.onResume();
Session session = Session.getActiveSession();
if (session != null && (session.isOpened() || session.isClosed())) {
onSessionStateChange(session, session.getState(), null);
}
uiHelper.onResume();
}
private void onSessionStateChange(final Session session,
SessionState state, Exception exception) {
if (state.isOpened()) {
// userInfoTextView.setVisibility(View.VISIBLE);
String token = session.getAccessToken();
Log.d("SESSION_TOKEN", token);
new Request(session, "me/likes?fields=events", null, HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
Log.i("INFO", response.toString());
// new
// GetResponses(userInfoTextView).execute(response);
}
}).executeAsync();
} else if (state.isClosed()) {
// userInfoTextView.setVisibility(View.INVISIBLE);
}
}
:
loginBtn.setReadPermissions(Arrays.asList("user_likes"));
이 내 코드인가? 내 세션이나 권한 요청이 잘못되었다고 생각합니다 ... 누군가가 나를 도울 수 있기를 바랍니다!
종류의 API 호출이 올바른 것으로 보인다는 API Explorer에서 작동 크리스토프
... 그것은 약 2 개월 만에 만료가 유효하고 모든 권한을 사용할 수 있습니다! 범위 \t public_profile, user_birthday, user_location, user_likes, user_events – user3490546
호출에서 액세스 토큰을 사용하고 있지 않습니다. 이는 API 탐색기에서 제대로 작동하므로 유일한 설명입니다. – luschn
그래프 탐색기에서 android-app의 액세스 토큰을 시도했는데 성공했습니다! 하지만 내가 안드로이드 애플 리케이션에서 동일한 요청을 할 때, 나는 항상 오류가 발생합니다. [스크린 샷] (http://c50i.imgup.net/GraphApiCa8655.JPG?l=de) – user3490546