sur*_*190 13 android facebook android-fragments
我创建了一个具有碎片导航抽屉的Android应用程序.
然后我开始使用社交媒体集成,即Facebook,Twitter和Google Plus.我正在使用相应的官方SDK.
非社交媒体会话和获取数据的调用在以下活动中进行:
Mainactivity:如果任何会话丢失或被撤销,则需要重定向到LoginActivity.这是在活动生命周期方法期间完成的.
LoginActivity :授予权限的位置,并在成功后重定向到Main
NavigationDrawerFragment :导航抽屉,我用它来显示用户的个人资料图像,姓名和电子邮件地址.
在这3个类中,我调用相应的SDK方法并管理会话,因此存在大量代码重复.
此外,3 SDK还提供了明显不同的身份验证方式.
UiLifeCycleHelper活动的所有标准生命周期功能上实现的功能.GooglePlay在活动中实施商店回调并创建GoogleApiClient所有活动.因此,所有这些用于处理不同社交媒体登录的功能都包含在所有必需的活动中,使得应用程序代码非常庞大且难以管理.
您是否有任何关于如何将这些auth方法抽象为易于维护的解决方案的建议,这使得管理会话变得更容易?我最好根据使用的登录信息进行单独的活动吗?
我已经做过好几次了,我可以推荐给您的最佳方法是:
FacebookFactory能够TwitterFactory为给定任务生成准备好的对象的平台。想象一下您想要登录,然后向具体工厂请求并公开LoginTask常见操作requestOAuthToken,例如getSession,等等。如果由于其他原因存在无法抽象的东西,您总是可以沮丧地知道它不会破坏您的应用程序。Context对象构建的(像 facebook 这样的一些网络确实具有侵入性,需要了解很多事情),通过以下方式决定您想要使用哪个社交网络一个enum。这是一个关于代码外观的模拟示例:
SocialFacade facade = SocialFacade.getInstance();
SocialSession session = facade.getSession(Network.Twitter);
String token = session.requestToken(apiId);
facade.getShare(Network.Twitter).sharePost(apiId, message);
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用某种第三方库,但这是我在没有任何东西适合我的需求时使用的方法。
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |