我尝试在我的应用中使用Facebook登录作为身份验证机制。
我无法弄清楚如何正确使用com.facebook.Session对象。
我有活动,片段在里面,我有按钮"登录Facebook"在那个片段上。
在按钮处理程序中,我有:
Session session = Session.getActiveSession();
if (session != null && (!session.isOpened() && !session.isClosed()))
{
session.openForRead(new Session.OpenRequest(this)
.setPermissions(Arrays.asList("public_profile"))
.setCallback(statusCallback));
}
else
{
Session.openActiveSession(getActivity(), this, true, statusCallback);
}
这是我的回调:
private Session.StatusCallback statusCallback = new SessionStatusCallback();
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
// Update session status (in TextView)
TextView tvSessionStatus = (TextView)(getView().findViewById(R.id.tvSessionStatus));
tvSessionStatus.setText(session.getState().toString());
}
}
当我点击按钮时 - 我看到TextView是通过回调更新的,并且有#34; OPENING"文字(tvSessionStatus.setText(session.getState().toString());
)
它永远不会改变为" OPEN"管他呢。 我做错了什么?
答案 0 :(得分:0)
确保:
1。您已使用OpenSSL正确生成了app-id并在应用程序清单中声明了它。
2。应用程序包名称和应用程序ID已在您的Facebook应用程序详细信息页面上正确输入。
3。您已申请相关权限并已从FB收到。
4。访问令牌有效(即非空)。
5. 访问令牌的会话状态为OPENED。
6。您已在Activity
/ Fragment
' onActivityResult()
中致电Session.onActivityResult()
。