android - 从服务中使用 facebook android sdk

标签 android facebook service facebook-android-sdk

我的应用程序具有在服务器上发送一些内容并(需要)将其发布到 facebook 上的功能。它使用服务发送(我使用 sqlite 存储数据)。是否可以通过服务处理 facebook session 等?我需要它,因为内容将存储在数据库中的时间和发送时间可能不同(可能是连接会在很长时间内丢失并且在连接可用后开始发送,但只有我的应用程序的发送服务在此期间处于 Activity 状态时间)。我找不到针对这种情况的任何解决方案(好的解决方案会很棒)。请帮忙。

最佳答案

用户必须明确授予应用程序权限,Android 服务不支持 Activity.startActivityForResult(),因此无法打开 Session 或通过服务重新授权来添加新权限。

但是,如果您在应用程序的一个 Activity 中打开/重新授权 Session,则 Session 的状态默认保存到 SharedPreferences。如果服务在这种情况发生后创建 session ,它将以 SessionState.CREATED_TOKEN_LOADED 结束。如果Session.getState()是CREATED_TOKEN_LOADED,则保证Session在没有UI的情况下可以openForRead(),传递一个null的Activity是合法的。 session 将拥有您的 Activity 保存的所有授予的权限。

为了简化这一切,您的服务只需调用:

Session session = Session.openActiveSession(this);

如果 SharedPreferences 中没有有效 token ,则此调用返回 null。

如果您的应用 UI 有一个设置区域,首先获取 token 存储的一种简单方法是包含一个 LoginFragment 作为设置面板之一。这将使您的用户登录/注销,并且应该保存 session 状态,以便您的服务可以在同一个应用程序中获取它。

关于android - 从服务中使用 facebook android sdk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13174666/

相关文章:

android - 如何通过MonkeyRunner点击android程序的 View ?

swift 。 Facebook 图片 url 返回 nil

android - 使用facebook最新的SDK获取用户相册?

android - CallRedirectionService 实现不起作用

android 矢量可绘制动画不起作用

java - Dagger2 组件通用注入(inject)方法

android - 有什么方法可以通过 android 服务检测音量键按下或音量变化吗?

grails - grails 服务的首字母应该大写还是小写?

java - 如果太长,文本对齐和切割

iOS Facebook 登录不起作用