【问题标题】:Facebook session throughout the Application - Android整个应用程序中的 Facebook 会话 - Android
【发布时间】:2013-05-23 17:28:48
【问题描述】:

我在我的应用程序中使用 Facebook SDK 3.0。我可以通过 Facebook 示例中提供的会话登录示例获取用户详细信息,例如访问令牌、电子邮件和姓名。我正在初始化会话对象并在登录页面本身上获取访问令牌、电子邮件和名称。完成获取电子邮件和访问令牌后,我将它们保存在 Shared Preference 中并将用户发送到 home Activity 并清除 Activity 堆栈。

现在的问题是,用户导航到整个应用程序时,它会降落在一个页面上,在该页面上,他可以选择在他的 Facebook 墙上分享某些内容。截至目前,我唯一拥有的是访问令牌。我的问题是,我现在该怎么办?我的意思是,我显然不希望用户再次登录 Facebook 并发布到墙上。我只想让用户点击一个按钮,故事应该会自动分享到他的 Facebook 墙上。我该怎么做?我应该通过 Intent 传递会话对象吗?我应该使用保存在共享首选项中的访问令牌来启动新会话吗?我应该怎么做?

我发现了很多关于 Facebook SDK 3.0 的问题,但没有一个可以提供我正在寻找的东西。有人能解释一下吗?

【问题讨论】:

    标签: android facebook facebook-android-sdk


    【解决方案1】:

    您无需显式保存访问令牌,或使用访问令牌重新创建会话,SDK 已经为您完成了这项工作!

    只需在所有活动中使用活动会话,如果您获得的活动会话为空,则打开一个新的活动会话。

    活动会话在 Session 类中是一个静态的,这意味着它会跨活动保留,即使它们“完成”时也是如此。

    如果用户已经授权您的应用,活动会话也会自动加载访问令牌。

    【讨论】:

      【解决方案2】:

      如果用户是第一次登录,应该创建一个会话。 我认为,只要应用程序没有关闭会话,用户就不必再次登录。您可以通过Session.getActiveSession()获取活动会话

      【讨论】:

      • 假设在第一个活动中打开了一个会话,当用户完成身份验证后,我将用户发送到主页活动(我称之为第二个活动)并完成()第一个活动。我希望用户通过第二个活动在 Facebook 墙上发布一些内容。现在当 Session.getActiveSession() 返回 null 时会发生什么?
      • 您可以使用以下命令恢复会话:Session.restoreSession(Context context, TokenCachingStrategy cachingStrategy, Session.StatusCallback callback, Bundle bundle) 这应该可以工作,直到您关闭会话(例如使用注销方法)
      • 感谢您的回复。截至目前,我正在检查会话是否为空,我正在打开一个新会话:accesstoken = AccessToken.createFromExistingAccessToken(accessToken, expirationTime,lastRefreshTime,accessTokenSource, permissions);session = Session.openActiveSessionWithAccessToken(Activity.this, accesstoken, statusCallback); 现在一切正常。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      相关资源
      最近更新 更多