問題があり、その理由がわかりません。助けていただければ幸いです。
FacebookグラフAPIを使用するAndroidアプリを開発しています。読み取り権限「user_likes」を使用します。このリクエストを行うと、 「me/likes」すべてが正常に機能します。しかし、これを行うと: me/likes?fields=events{cover},name
OAuthExceptionが発生します。errorMessage: 現在のユーザーに関する情報を照会するには、アクティブなアクセス トークンを使用する必要があります
結論は:
- 必要なすべてのアクセス許可を持つ有効なアクセス トークンを取得します。
- 私は自分のアプリの管理者なので、Facebook のプライバシー ポリシーは何の役割も果たしません。
- リクエスト
私/好き
動作しますが、
me/likes?fields=イベント
動作しません!
私が得る応答:
{応答: responseCode: 400、graphObject: null、エラー: {HttpStatus: 400、errorCode: 2500、errorType: OAuthException、errorMessage: 現在のユーザーに関する情報を照会するには、アクティブなアクセス トークンを使用する必要があります。}、isFromCache:false}
だから私は自分のアクセストークンをデバッグしました:
発行: 1420803216 (4 時間前)
有効期限: 1425987216 (約 2 か月後)
有効: 真
起源: モバイル ウェブ Faceweb
スコープ: public_profile、basic_info、email、user_birthday、user_location、user_likes、user_friends
アクセス トークンに多くのスコープがある理由がよくわかりません。「user_likes」を設定しました!
loginBtn.setReadPermissions(Arrays.asList("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);
}
}
私は何を間違っていますか?私のセッションまたは許可リクエストに何か問題があると思います...誰かが私を助けてくれることを願っています!
よろしくクリストフ