官方文档地址:
接入Twitter
具体查看官方提供的说明文档
创建应用
1、创建应用
进入网址:https://apps.twitter.com/ 创建应用,获得key,secret,勾选
Allow this application to be used to Sign in with Twitter
2、在Callback URLs添加"twittersdk://"
不然没有安装Twitter App的时候会返回错误。
工程配置
1、build.gradle(app)引入库文件
dependencies {
compile 'com.twitter.sdk.android:twitter-core:3.1.1'
}
2、build.gradle(project) 配置jcenter()
repositories {
jcenter()
}
3、strings添加consumer_key和consumer_secret
xxxxxxxxxx
xxxxxxxxxx
代码调用
一、使用TwitterLoginButton
1、初始Twitter
private void initTwitter() {
String key = getString(R.string.twitter_consumer_key);
String secret = getString(R.string.twitter_consumer_secret);
TwitterConfig config = new TwitterConfig.Builder(this)
.logger(new DefaultLogger(Log.DEBUG))
.twitterAuthConfig(new TwitterAuthConfig(key, secret))
.debug(true)
.build();
Twitter.initialize(config);
}
2、配置XML文件
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
3、设置login和回调
private void twitterButton () {
loginButton = (TwitterLoginButton) findViewById(R.id.login_button);
loginButton.setCallback(new Callback() {
@Override
public void success(Result result) {
// Do something with result, which provides a TwitterSession for making API calls
// result里面包含了用户的信息,我们可以从中取出token,tokenSecret
// 如果我们有自己的后台服务器,发送这两个到我们自己的后台,后台再去验证)
TwitterAuthToken authToken = result.data.getAuthToken();
String token = authToken.token;
String tokenSecret = authToken.secret;
String userName = result.data.getUserName();
String userId = result.data.getUserId()+"";
Log.i("token",token);
Log.i("tokenSecret",tokenSecret);
Log.i("userName",userName);
Log.i("userId",userId);
}
@Override
public void failure(TwitterException exception) { // Do something on failure
exception.printStackTrace();
}
});
}
4、处理onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Pass the activity result to the login button.
if(loginButton!=null) {
loginButton.onActivityResult(requestCode, resultCode, data);
}
}
使用自定义Button
1、初始化同上面
2、配置xml
设置一个自定义的Button
3、设置调用和回调
private void customerButton () {
mbutton = (Button)findViewById(R.id.login_customer_button);
mbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
authTwitter();
}
});
}
private void authTwitter() {
mTwitterAuthClient = new TwitterAuthClient();
mTwitterAuthClient.authorize(this, new Callback() {
@Override
public void success(Result result) {
TwitterAuthToken authToken = result.data.getAuthToken();
String token = authToken.token;
String tokenSecret = authToken.secret;
String userName = result.data.getUserName();
String userId = result.data.getUserId()+"";
Log.i("token",token);
Log.i("tokenSecret",tokenSecret);
Log.i("userName",userName);
Log.i("userId",userId);
}
@Override
public void failure(TwitterException exception) {
exception.printStackTrace();
}
});
}
4、处理onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(mTwitterAuthClient!=null) {
mTwitterAuthClient.onActivityResult(requestCode,resultCode,data);
}
}
详情请参考demo工程
常见问题
一、返回错误:Callback URL not approved for this client application
Invalid json:?xml version="1.0" encoding="UTF-8"?Callback URL not approved for this client application.
Approved callback URLs can be adjusted in your application settings
这个是在没有安装Twitter App的时候,调用登录会默认加载网页版的登录页面。
解决方法:在App设置那边的Callback URLs添加:"twittersdk://"
4F4A5044-70AD-4681-9CCC-EE873E87B47B.png