Mein Problem ist, dass sie nicht bei allen Aktivitäten funktioniert.
Bei dieser Aktivität wird der Rückruf nicht aufgerufen.Nachdem die Webansicht zum Anmelden und Autorisieren der Anwendung verworfen wurde, wird der Rückruf nicht ausgelöst.
Der letzte in Logcat ausgegebene Status ist OPENING
Hier ist mein Code:
Code: Select all
public void doLogin() {
if ((Session.getActiveSession() == null || !Session.getActiveSession().isOpened())) {
List permissions = new ArrayList();
permissions.add("email");
// start Facebook Login
openActiveSession(activity, true, new Session.StatusCallback() {
// callback when session changes state
@Override
public void call(Session session, SessionState state,
Exception exception) {
Log.d("Sessionstate", state.toString());
if (session.isOpened()) {
// make request to the /me API
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user,
Response response) {
if (prgCheckFB.isShowing())
prgCheckFB.dismiss();
if (user != null) {
Log.e("facebookid", id);
doSomething(user);
}
}
});
}
}, permissions);
}
}
private static Session openActiveSession(Activity activity,
boolean allowLoginUI, Session.StatusCallback callback,
List permissions) {
Session.OpenRequest openRequest = new Session.OpenRequest(activity)
.setPermissions(permissions).setCallback(callback);
Session session = new Session.Builder(activity).build();
if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState())
|| allowLoginUI) {
Session.setActiveSession(session);
session.openForRead(openRequest);
return session;
}
return null;
}
Code: Select all
doSomething
Stimmt etwas nicht? Die Funktion funktioniert bei einigen Aktivitäten, aber nicht bei ALLEN Aktivitäten.