如何在Android上处理多个社交媒体登录和会话流?
我创建了一个android应用程序,它有一个带有片段的导航抽屉 然后我开始了社交媒体整合,即Facebook、Twitter和Google Plus。我正在使用各自的官方SDK 在以下活动中进行非社交媒体会话和电话获取数据:如何在Android上处理多个社交媒体登录和会话流?,android,facebook,android-fragments,Android,Facebook,Android Fragments,我创建了一个android应用程序,它有一个带有片段的导航抽屉 然后我开始了社交媒体整合,即Facebook、Twitter和Google Plus。我正在使用各自的官方SDK 在以下活动中进行非社交媒体会话和电话获取数据: Mainactivity:如果任何会话丢失或被撤销,它需要重定向到LoginActivity。这是在活动生命周期方法期间完成的 LoginActivity:授予权限并在成功后重定向到Main NavigationDrawerFragment:在导航抽屉中,我使用它来显示用
:如果任何会话丢失或被撤销,它需要重定向到Mainactivity
。这是在活动生命周期方法期间完成的LoginActivity
:授予权限并在成功后重定向到MainLoginActivity
:在导航抽屉中,我使用它来显示用户的配置文件图像、名称和电子邮件地址NavigationDrawerFragment
- Facebook:使用在活动的所有标准生命周期功能上实现的
- Google Plus:您必须在活动中实现
存储回调,并在所有活动上创建GooglePlay
GoogleAppClient
- Twitter:没有那么“接管你的应用”的态度,它采用了与安卓系统上常见的restapi调用相同的改进方式:with。但是,您必须为每个登录授予权限
我最好根据使用的登录名进行单独的活动吗?我和你在同一条船上
到目前为止,我已经找到了工作,但我仍在玩弄它。我也面临着这种问题。让我告诉你我做了什么
这就是
工厂模式
起作用的外部问题
你需要去做
我已经做过几次了,我可以向您推荐的最佳方法是:
- 提取要添加的集成部分。它只是共享,您想让用户启动会话吗,您需要任何类型的API密钥吗
- 完成第一步后,您可以提取所有社交平台通用的一些抽象层方法(几乎总是有一个通用函数)
- 为能够为给定任务生成准备好的对象的每个平台(如
或FacebookFactory
)生成工厂。假设您想登录,然后向具体工厂请求TwitterFactory
,并公开常见操作,如LoginTask
,requestOAuthToken
,等等。如果由于其他原因,存在无法抽象的内容,您可以随时向下转换,知道它不会破坏您的应用程序getSession
- 您可以使用Facade模式生成第二个抽象层,让人感觉更舒适。Facade模式是通过
对象构建的(一些像facebook这样的网络确实具有入侵性,需要知道很多事情),它决定您想通过上下文
使用哪一个社交网络枚举
SocialFacade facade = SocialFacade.getInstance();
SocialSession session = facade.getSession(Network.Twitter);
String token = session.requestToken(apiId);
facade.getShare(Network.Twitter).sharePost(apiId, message);
当然,您可以使用某种第三方库,但这是我在没有适合我的需要时使用的方法