Android Facebook登录 - 选项太多

时间:2013-02-19 08:15:11

标签: android facebook

我想创建一个Android应用程序,使用Facebook对用户进行身份验证,然后将访问令牌传递给我们的Web应用程序服务器。

只有在用户通过身份验证后,该应用才会生效。所以当它开始时我需要打开一个Facebook会话,然后使用访问令牌并联系我们自己的服务器以获取更多信息。然后,相同的Facebook会话将用于各种应用程序活动。

我无法决定如何处理Facebook会话。我是否在第一个活动中放置了一个登录按钮described here?当会话状态发生变化时,我在其他活动中该怎么办?我不想在每个活动中添加Facebook登录信息......

或者,我可以使用自己的按钮,如SDK的登录示例所示。但是当我在另一个活动中关闭会话时,我会遇到相同的管理问题。

或者我可以将所有内容放在同一个活动中并使用不同的片段。

什么是最佳实践方式?

注意:关于此问题的大多数SO问题都与较旧的SDK相关(使用现已弃用的Facebook类)。

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用单个Activity来处理所有会话状态更改,并使用它来驱动UI更改。无论如何,Android正在向Fragment模型发展,所以我认为这是你最好的选择。

或者,如果您需要使用不同的活动,则始终可以使用具有对当前活动的引用的公共Session.StatusCallback实现。然后,如果状态更改驱动UI更改,则可以创建启动新活动的意图。

答案 1 :(得分:0)

你可以像这样获得你的facebook会话

Session session = Session.getActiveSession();
    if (session == null) {
        if (savedInstanceState != null) {
            session = Session.restoreSession(getActivity(), null, statusCallback, savedInstanceState);
        }
        if (session == null) {
            session = new Session(getActivity());
        }
        Session.setActiveSession(session);
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
            session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
        }
    }