繁体   English   中英

无法将Facebook集成到我的Android应用中

[英]Having trouble integrating Facebook into my android app

我正在通过我的应用程序集成通过Facebook登录。 我有这段显示登录的代码:

Session.openActiveSession(getActivity(), true, new Session.StatusCallback() {

    // callback when session changes state
    public void call(Session session, SessionState state, Exception exception) {
        if (session.isOpened()) {
            Log.d("s", "SUCCES");
            // make request to;2 the /me API
        }

        if (exception != null) {
            Log.d("s", exception.toString());
        }

        Log.d("s", "state:" + state.toString());
    }
});

输入用户名/密码后,我会在日志中得到此信息:

 D/app﹕ com.facebook.FacebookException: Log in attempt aborted.
 D/app﹕ state:CLOSED_LOGIN_FAILED
 D/app﹕ state:OPENING

我尝试过的

  • 检查我的包裹名称是否正确
  • 检查哈希键是否正确(由facebook使用代码)
  • 我的应用退出了沙盒模式。
  • 检查清单文件中是否有正确的应用程序ID

我做错了什么?

谢谢!

我认为您遇到了这个问题,因为您已经有一个活跃的会话。 因此,在尝试重新打开它之前先对其进行测试。

 Session.StatusCallback statusCallback = new Session.StatusCallback() {

// callback when session changes state
public void call(Session session, SessionState state, Exception exception) {
    if (session.isOpened()) {
        Log.d("s", "SUCCES");
        // make request to;2 the /me API
    }

    if (exception != null) {
        Log.d("s", exception.toString());
    }

    Log.d("s", "state:" + state.toString());
}


Session session = Session.getActiveSession();
if (session!=null && !session.isOpened() && !session.isClosed()) {
    session.openForRead(new Session.OpenRequest(this)
        .setPermissions(...)
        .setCallback(statusCallback));
} else {
    Session.openActiveSession(getActivity(), true, statusCallback);
}

通过阅读Facebook的SDK代码,我们可以得出一些结论。

您会在回调中收到带有特定消息和状态的异常。 仅当状态为OPENING(同时由setActiveSession调用)且状态为OPENING时,才发送这两个方法,而setActiveSession会同时调用这两个方法,而Session.openActiveSession(...)会直接调用这两个方法Session.openActiveSession(...)

接下来要调用的是session.openForRead(openRequest) ,它调用open(openRequest, ...) ,当前状态为CREATED (建立新会话后的默认状态)。 这将通过setActiveSession(session)将新会话设置为活动会话,如果有一个活动会话,该会话最终将关闭oldSession,这又是一回事,您得到一个FacebookException,消息上出现“登录尝试中止”,仅在上一个会话的当前状态为OPENING时才被调用。

这意味着您要么在短时间内两次调用这段代码,要么授权过程没有完成,最终陷入僵局(很可能)。

在深入了解授权方法之前,我将仔细检查facebook中的配置(模式,键哈希-根据启动环境的不同而不同:生产,degub等-,程序包名称和启动活动)。 为简单起见,每次尝试时都要清除应用程序的数据和缓存(或从代码中手动调用closeAndClearTokenInformation()

让我们看看结果如何继续深入研究这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM