android的xml登录,Android使用Twitter登录应用

官方文档地址:

接入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://"

a31f05fa30af?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

4F4A5044-70AD-4681-9CCC-EE873E87B47B.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值