wake-up-neo.com

API-Aufrufe vom Server erfordern ein appsecret_proof-Argument

Ich kann mit dem Android Facebook SDK keine API-Anfragen stellen oder den Benutzer vom Login-Callback abrufen - es wird immer null zurückgegeben.

Insbesondere mit dem newMeRequest erhalte ich die folgende Fehlermeldung:

{ "error": {
 "message": "API calls from the server require an appsecret_proof argument", 
 "type": "GraphMethodException", 
 "code": 100   } }

Eigentlich scheint es ziemlich offensichtlich, weil die Flagge in den Optionen der Facebook-App auf wahr gesetzt ist. Ich weiß jedoch, dass es für die mobilen SDKs möglich ist, API-Anfragen ohne das Geheimnis zu stellen. Wenn ich jedoch versuche, das Zugriffstoken aus der currentSession im Facebook Graph API-Debugger zu verwenden, ist die Antwort dieselbe wie oben.

Ich weiß nicht, ob dies mit dem neuen Android Facebook SDK zusammenhängt, aber mein Code ist im Grunde derselbe wie in den Beispielen. Die Anmeldung funktioniert einwandfrei und ich erhalte das Sitzungstoken, kann aber keine API-Anforderungen stellen ...

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();
10
dwbrito

Die einzige Möglichkeit, wie ich es zum Laufen bringen konnte, bestand darin, No den App Secret proof for API calls in den erweiterten Einstellungen der Facebook-App einzustellen.

Dies ist jedoch ein Fix und keine Lösung, da ich die Anforderung in der Option Yes nicht ausführen konnte (wie es in der iOS-Facebook-SDK möglich ist).

28
dwbrito

sie müssen Ihrer Anfrage einen Parameter "appsecret_proof" hinzufügen, der einen 'sha256'-Hash von accessToken und appSecret enthält

https://developers.facebook.com/docs/graph-api/securing-requests

9
lnx

Sie müssen Require App Secret in den Voreinstellungen der Facebook-App deaktivieren.

4
Donal

Obwohl dies keine tatsächliche Antwort auf Ihre Frage ist (da es sich nicht um das Android SDK handelt), scheint es ab März 2018 immer noch einige Probleme bezüglich appsecret_proof und zu geben Anrufe von Webseiten (Javascript)/und möglicherweise mobilen (nicht sicher) Clients.

Facebook-Fehlerbericht (Februar 2018) - Problem erneut aufgetreten

Facebook-Fehlerbericht (Oktober 2016)

Facebook-Fehlerbericht (Februar 2015)

Das heißt, für eine Anwendung mit App Secret erforderlich aktiviertem App Dashboard > Settings > Advanced > Security > Require App Secret scheint es nicht möglich zu sein, API-Aufrufe von Javascript durchzuführen, ohne den appsecret_proof zu übergeben - zum Zeitpunkt des Schreibens (März 2018).

Schnelle "Korrektur" - Deaktivieren Sie die Flagge. Abhängig von den Anforderungen kann man sich auch für zwei Facebook-Anwendungen entscheiden: eine für Webseiten-/Mobilanrufe (Flag deaktiviert) und eine für serverseitige Anrufe (Flag aktiviert).

0
turdus-merula