Android Facebook SDKでAPIリクエストを行うことも、ログインコールバックからユーザーを取得することもできません。常にnullを返します。
特に、newMeRequestを使用すると、次のエラーメッセージが表示されます。
{ "error": {
"message": "API calls from the server require an appsecret_proof argument",
"type": "GraphMethodException",
"code": 100 } }
実際、フラグはFacebookアプリのオプションでtrueに設定されているため、かなり明白なようです。ただし、モバイルSDKでは、シークレットなしでAPIリクエストを実行することは可能です。ただし、Facebook Graph APIデバッガーでcurrentSession
からのアクセストークンを使用しようとすると、応答は上記と同じになります。
これが新しいAndroid Facebook SDKに関連しているかどうかはわかりませんが、私のコードは基本的に例と同じです。ログインはうまくいき、セッショントークンを取得しましたが、 APIリクエストを行わない...
loginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {
@Override
public void onUserInfoFetched(GraphUser user) {
graphUser = user;
}
});
Request.newMeRequest(currentSession, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
}
}
}).executeAsync();
私がそれを機能させることができた唯一の方法は、No
に設定することでしたApp Secret proof for API calls
Facebookアプリの詳細設定で。
ただし、これは解決策ではなく解決策です。Yes
に設定されたオプションでリクエストを実行できなかったためです(iOS facebook sdkで可能です)。
accessTokenとappSecretの「sha256」ハッシュを含むパラメータ「appsecret_proof」をリクエストに追加する必要があります
https://developers.facebook.com/docs/graph-api/securing-requests
Facebookアプリの詳細設定でRequire App Secret
を無効にする必要があります。
あなたの質問に対する実際の回答ではありませんが(Android SDKが含まれていないため))、2018年3月現在、 appsecret_proofとWebページ(Javascript)/およびモバイル(それについては不明)からの呼び出しに関する問題がまだいくつかあります。
つまり、Require App SecretがApp Dashboard > Settings > Advanced > Security > Require App Secret
で有効になっているアプリケーションの場合、appsecret_proof
を渡さないとJavascriptからAPI呼び出しを実行できないようです-執筆の瞬間(2018年3月)。
クイック「修正」-フラグを無効にします。要件に応じて、2つのFacebookアプリケーションを選択することもできます。1つはWebページ/モバイルコール用(フラグは無効)、もう1つはサーバー側コール用(フラグは有効)です。