如何正确使用com.facebook.Session?

时间:2015-03-06 15:05:02

标签: android facebook

我尝试在我的应用中使用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"管他呢。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

确保:

1。您已使用OpenSSL正确生成了app-id并在应用程序清单中声明了它。

2。应用程序包名称和应用程序ID已在您的Facebook应用程序详细信息页面上正确输入。

3。您已申请相关权限并已从FB收到。

4。访问令牌有效(即非空)。

5. 访问令牌的会话状态为OPENED。

6。您已在Activity / Fragment' onActivityResult()中致电Session.onActivityResult()