我想创建一个Android应用程序,使用Facebook对用户进行身份验证,然后将访问令牌传递给我们的Web应用程序服务器。
只有在用户通过身份验证后,该应用才会生效。所以当它开始时我需要打开一个Facebook会话,然后使用访问令牌并联系我们自己的服务器以获取更多信息。然后,相同的Facebook会话将用于各种应用程序活动。
我无法决定如何处理Facebook会话。我是否在第一个活动中放置了一个登录按钮described here?当会话状态发生变化时,我在其他活动中该怎么办?我不想在每个活动中添加Facebook登录信息......
或者,我可以使用自己的按钮,如SDK的登录示例所示。但是当我在另一个活动中关闭会话时,我会遇到相同的管理问题。
或者我可以将所有内容放在同一个活动中并使用不同的片段。
什么是最佳实践方式?
注意:关于此问题的大多数SO问题都与较旧的SDK相关(使用现已弃用的Facebook
类)。
答案 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));
}
}