- Forum-Beiträge: 5
11.01.2015, 10:03:56 via Website
11.01.2015 10:03:56 via Website
Hallo,
evtl. hat mit der Facebook Graph API schon jemand von euch gearbeitet? Ich habe nämlich ein Problem damit, welches ich nicht nachvollziehen kann.
Von Facebook wird ein Graph API Explorer angeboten mit dem man die beliebigen Requests testen kann.
Ich testete im Graph API Explorer folgende Requests:
- me
- me/likes
- me/likes?fields=events
alle 3 funktionieren im Graph API Explorer ohne Probleme.
Führe ich dieselben requests jedoch in meiner Android app aus, funktioniert der letzte(me/likes?fields=events) nicht mehr und ich versteh nicht wieso.
Ich erhalte hier folgenden Fehler:
{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}
Die Fehlermeldung sagt also, dass mein Access Token invalid sei, nur das stimmt nicht. Ich habe mir den Access Token ausgeben lassen und diesen debuged. Das Resultat war, dass der Access Token valide ist und alle benötigten Berechtigungen besitzt.
Was waren die einzelnen Schritte die ich bis jetzt gemacht habe:
- Bei Facebook eine neue App angelegt und alle benötigten Informationen angegeben
- FacebookSDK heruntergeladen und in meiner Android-App eingebunden
- Kleine Testapp geschrieben die einen Facebook-LoginButton
enthält und einen Request absetzen kann
Der Quellcode dazu:
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);
}
}
Habe ich irgendetwas vergessen weswegen es nicht funktionieren könnte?
Oder hat von euch irgendjemand einen Lösungsvorschlag? Ich verzweifle langsam :/
Oder hätte sogar jemand Zeit sich selber kurz eine solche Testapp zu bauen um zu sehen ob es bei ihm korrekt funktioniert?
Ich verstehe einfach nicht, wieso mit ein und demselben Access-Token die Abfragen im Graph API Explorer sowie als normaler http get request funktionieren jedoch in der Android app nicht.
— geändert am 25.01.2015, 09:43:36
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.