Android接入Twitter第三方登录完整教程
2017-12-03 14:00
260 查看
Android接入Twitter第三方登录完整教程
本文的主要目的是介绍如何通过Twitter官方的Twitter Kit依赖库进行第三方应用自定义的登录流程实现,下面我们来逐一介绍。一、Twitter Kit是什么?
Twitter Kit就是Twitter工具包,它旨在与Twitter进行无缝和高效的交互。使用Twitter Kit的组件,显示推文,登录Twitter或者从你的应用程序发送推文都变得容易了。Twitter Kit提供了对推文和实时时间线的视图,还有从你的应用里分享推文都可以通过几行代码来实现。(ps:翻译自官方文档,蹩脚英语还望各位海涵)Twitter工具包主要由以下3个工具包组成,分别是:
1.TwitterCore
主要用于实现用户登录Twitter,加载和获取用户的Twitter个人信息。
2.TweetUi
主要用于展示Twitter各项组件。
3.TweetComposer
主要用于从你的应用程序分享推文到Twitter中。
二、Android应用接入Twitter sdk的具体步骤
1.添加Twitter库的依赖compile 'com.twitter.sdk.android:twitter:3.1.1'
如果只用到了某个特定的功能模块,也可只添加特定的依赖,分 compile 'com.twitter.sdk.android:twitter-core:3.1.1' compile 'com.twitter.sdk.android:tweet-ui:3.1.1' compile 'com.twitter.sdk.android:tweet-composer:3.1.1' 在依赖仓库里添加jcenter声明: repositories { jcenter() }
2.在你的自定义application类中添加初始化语句
默认的初始化方式:
public class CustomApplication { public void onCreate() { Twitter.initialize(this); } }
默认的初始化方式要在资源文件里声明CONSUMER_KEY和CONSUMER_SECRET:
<resources> <string android:name="com.twitter.sdk.android.CONSUMER_KEY">XXXXXXXXXXX</string> <string android:name="com.twitter.sdk.android.CONSUMER_SECRET">XXXXXXXXXXX</string> </resources>
自定义的初始化方式:
public void onCreate() { TwitterConfig config = new TwitterConfig.Builder(this) .logger(new DefaultLogger(Log.DEBUG)) .twitterAuthConfig(new TwitterAuthConfig("CONSUMER_KEY", "CONSUMER_SECRET")) .debug(true) .build(); Twitter.initialize(config); }
两种初始化方式根据个人需求而选择,自定义初始化方式可以不用在资源文件中声明CONSUMER_KEY和CONSUMER_SECRET。在https://apps.twitter.com/上登录后,找到你的已经创建的应用,在设置页面中可以找到对应该应用的CONSUMER_KEY和CONSUMER_SECRET。
注意:
在https://apps.twitter.com/上登录后,要在Permissions该页面下的Access栏目中勾选你需要的对应权限。
在settings页面下,如果需要实现在你的应用里登录Twitter,要填上重定向地址Callback URL,可以填公司的主页地址。还需要在Allow this application to be used to Sign in with Twitter选项上打勾。
3.登录的方式
(1)使用TwitterLoginButton:这是官方文档推荐的方式,但是最明显的缺点就是Button的样式是由官方规定的,而且按钮的宽度还比较长,这个方法比较简单,就不详细讲了,详情可参考官方文档。
(2)自定义按钮样式:不少需要集成第三方登录的app的登录页面上只有一行空间用于显示登录按钮,这其中需要登录的应用可能包括:Facebook、Twitter、Gmail、Instagram等等,显然如果采取官方推荐的按钮样式是满足不了这样的需求的,按钮的具体显示很多都要自定义,下面就讲如何实现该方法,我们先来了解以下几个和登录流程相关的几个关键类。
TwitterAuthClient:查看TwitterLoginButton的源码可以知道,它是实现请求授权的工具类,它的构造函数需要传递一个Callback,负责监听请求授权的成功与失败回调。
TwitterSession:该类是用于保存用户授权的认证信息的,只有用户授权了,Twitter才认证你的应用可以获取用户的个人信息,而证明你的应用已经被认证的途径就是通过TwitterSession,它的实例可以通过以下代码获得:
TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
TwitterApiClient:这个类从名字看就能猜到它的作用,它是用于进行用户授权后各种Twitter api的http请求工具类。注意,该工具类只有在用户授权,Twitter官方认证之后才能使用。
使用方法范例如下:
TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient(); StatusesService statusesService = twitterApiClient.getStatusesService(); Call<Tweet> call = statusesService.show(user_id, null, null, null); call.enqueue(new Callback<Tweet>() { @Override public void success(Result<Tweet> result) { //Do something with result } public void failure(TwitterException exception) { //Do something on failure } });
获取到TwitterApiClient实例,可以通过它的get方法获取Service类,在Service类的对应方法传入api请求的参数,就可以实现http请求获取用户信息,每个Service类的名字已经表明了它能获取到的用户信息。如果TwitterApiClient里默认实现的Service类不足以满足你的需求,你可以自定义TwitterApiClient实现类,在里面添加你要实现的Service接口,范例如下:
class MyTwitterApiClient extends TwitterApiClient { public MyTwitterApiClient(TwitterSession session) { super(session); } /** * Provide CustomService with defined endpoints */ public CustomService getCustomService() { return getService(CustomService.class); } // example users/show service endpoint interface CustomService { @GET("/1.1/users/show.json") Call<User> void show(@Query("user_id") long id); }
关键代码在于实现Service接口,因为Twitter库是使用Retrofit来封装网络请求的,所有Service接口用于声明http请求的风格需与Retrofit一致。
注意:自定义MyTwitterApiClient时,构造方法需要传入TwitterSession参数。
好,介绍完以上3个关键类,相信大家都已经知道具体怎么去实现自定义的登录流程了。具体的流程为先创建一个TwitterAuthClient类来进行请求授权操作,当用户登录并授权应用成功后,监听TwitterAuthClient的success方法回调,在success方法中再通过TwitterApiClient来获取用户的个人信息。
下面是部分关键代码,仅供参考:
public interface LoginCallback { void onSuccess(); void onFailure(); } public void loginTwitter(Activity activity, final LoginCallback callback) { if (mTwitterAuthClient == null) { mTwitterAuthClient = new TwitterAuthClient(); } mTwitterAuthClient.authorize(activity, new Callback<TwitterSession>() { @Override public void success(Result<TwitterSession> result) { String name = result.data.getUserName(); long userId = result.data.getUserId(); getTwitterUserInfo(userId, callback); } @Override public void failure(TwitterException e) { callback.onFailure(); } }); } private void getTwitterUserInfo(final long userId, final LoginCallback callback) { final TwitterSession activeSession = TwitterCore.getInstance().getSessionManager().getActiveSession(); TwitterApiClient client = new TwitterApiClient(activeSession); AccountService accountService = client.getAccountService(); Call<User> show = accountService.verifyCredentials(false, false, false); show.enqueue(new Callback<User>() { @Override public void success(Result<User> result) { User data = result.data; String profileImageUrl = data.profileImageUrl.replace("_normal", ""); String name = data.name; callback.onSuccess(); } @Override public void failure(TwitterException exception) { exception.printStackTrace(); callback.onFailure(); } }); }
相关文章推荐
- android中接入twitter进行第三方登录
- Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(图文)
- Android Twitter第三方登录&获取用户信息
- Android代码混淆、第三方平台加固加密、渠道分发 完整教程
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
- 只要五分钟,让你成功接入Twitter的第三方登录
- Android第三方登录集合(QQ、微信、微博、百度、facebook、twitter)
- Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(图文)
- Android应用接入第三方登录之新浪登录
- Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(转)
- Android Studio Mob第三方登录/分享(图文教程)
- Android平台下Facebook,Google service, 新浪微博接入第三方应用SSO授权教程
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
- Android开发接入第三方原生SDK实现QQ登录
- Android微信第三方登录接入
- cocos2d-x 接入android ,登录第三方SDK时屏幕不断闪烁刷屏的问题解决
- Android开发接入第三方原生SDK实现微信登录
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)