[英]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
我尝试过的
我做错了什么?
谢谢!
我认为您遇到了这个问题,因为您已经有一个活跃的会话。 因此,在尝试重新打开它之前先对其进行测试。
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.