gpt4 book ai didi

android - Facebook API : cannot login on Android

转载 作者:行者123 更新时间:2023-11-29 00:26:50 24 4
gpt4 key购买 nike

我正在尝试使用 Facebook API 在 Android 上实现 Facebook 登录。我已经按照我的方式做了所有事情Facebook Login Flow说。代码如下。

public class FBSignIn extends Fragment {
private UiLifecycleHelper uiHelper;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

final View v = super.onCreateView(inflater, container, savedInstanceState);
setTitle("Sign In");
reloadTemplate();

uiHelper = new UiLifecycleHelper(getActivity(), callback);
uiHelper.onCreate(savedInstanceState);

return v;
}

@Override
public void onResume() {
super.onResume();
uiHelper.onResume();
}

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

@Override
public void onPause() {
super.onPause();
uiHelper.onPause();
}

@Override
public void onDestroy() {
super.onDestroy();
uiHelper.onDestroy();
}

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
uiHelper.onSaveInstanceState(outState);
}

@Override
public boolean executeCommand(BaseWebView webView, String command, String data) {

if (command.equalsIgnoreCase("login")) {
Session session = Session.getActiveSession();

if (session != null && session.isOpened()) {
loginWithFBToken(session.getAccessToken());
return;
}

Session.openActiveSession(getActivity(), true, callback);
}

return true;
}

private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
onSessionStateChange(session, state, exception);
}
};

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
if (state.isOpened()) {
// Facebook logged in...

} else if (state.isClosed()) {
//Facebook logged out...
}
}

}

但是,在 Session.openActiveSession() 调用之后,在 onSessionsStateChange() 函数中,我首先得到 state == CLOSED_LOGIN_FAILED;之后它被第二次调用,使用 state == OPENING。所以它永远不会进入 OPENED 状态。

这段代码有什么问题?非常感谢您的帮助。

附言我已经注释掉所有关于 uiHelper 的内容,并且在我的主要 Activity 中,提供了重写的方法:

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

现在对 onSessionStateChange 的第一次调用带有 state == OPENINGexception == null。第二次调用带有 state == CLOSED_LOGIN_FAILEDexception == Invalid access token。这是什么意思?

最佳答案

我已经解决了这个问题。原因是我们的应用程序是在沙盒模式下注册到 Facebook 的,只有某些用户可以使用 Facebook 登录。当我使用这些帐户之一登录时,它起作用了。

关于android - Facebook API : cannot login on Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18699707/

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