gpt4 book ai didi

Android Facebook SDK 登录后不调用回调

转载 作者:IT老高 更新时间:2023-10-28 21:47:32 42 4
gpt4 key购买 nike

我正在尝试在我的应用程序中创建一个处理 Facebook 登录的类。我的问题是它不适用于所有 Activity 。在该 Activity 中,它不会调用回调。关闭登录和授权应用程序 webview 后,不会触发回调。Logcat 中打印的最后一个状态是 OPENING

这是我的代码:

public void doLogin() {


if ((Session.getActiveSession() == null || !Session.getActiveSession().isOpened())) {
List<String> permissions = new ArrayList<String>();
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<String> 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;
}

doSomething 是一个将用户数据保存在共享首选项中的函数。

有什么问题吗?该功能适用​​于某些 Activity ,但不适用于所有 Activity 。

最佳答案

可能你登录后忘记处理结果了……

检查覆盖方法onActivityResult..

因为它将处理结果返回给MainActivity,

也许这可以帮助您解决问题..

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}

更新 1

对于较新的 SDK 使用:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode,
resultCode, data);
}

关于Android Facebook SDK 登录后不调用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20371842/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com