在应用中接入Twitter进行第三方登录时,开发人员遇到了一点问题,主要是概念有点混乱,这里把经验记录一下,帮助遇到同样问题的朋友。

一、注册应用并配置登录权限

这一步比较简单,就不多说了,直接去官网添加应用,给读写权限就行了。

网址:https://dev.twitter.com/apps

这一步完成后,最重要的是得到两个数据,一个是app_key,一个是app_secret。这两个字符串在后面会用到。

二、添加依赖的包(引用sdk)

这一步要注意的是,twitter的sdk是放在自己的maven库中,而现在AndroidStudio默认用的是jCenter,所以这里我们要在build.gradle中添加maven库,然后引入twitter sdk。

首先在整个项目的build.gradle中的 repositories 里添加maven如下:

repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
jcenter()
}

然后在模块的build.gradle中添加maven库并引入sdk:

repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
} dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
...
compile('com.twitter.sdk.android:twitter-core:1.3.1@aar') {
transitive = true;
}
}

这里大家可以看到出现了Fabric,这个是什么东西呢,其实是Twitter开发的开发者工具包。

三、在Mainfest中配置Fabric ApiKey

在AndroidManifest.xml中的application节点内添加如下代码:

<meta-data android:name="io.fabric.ApiKey" android:value="第一步中得到的app_id"/>

四、添加登录按钮

现在我们就可以在activity的布局文件中添加登录按钮了,代码如下:

<com.twitter.sdk.android.core.identity.TwitterLoginButton
android:id="@+id/twitter_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:clickable="true" />

五、sdk初始化

在我们注册登录按钮事件之前,还有一件事很重要,就是初始化sdk。这里有个需要注意的地方就是sdk的初始化一定要在setContentView之前

初始化代码如下:

import io.fabric.sdk.android.Fabric;
import com.twitter.sdk.android.core.TwitterCore;
import com.twitter.sdk.android.core.TwitterAuthConfig; public class LoginActivity extends AppCompatActivity { private static final String TWITTER_KEY = "app_id";
private static final String TWITTER_SECRET = "app_secret"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TwitterAuthConfig authConfig =
new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new TwitterCore(authConfig));
setContentView(R.layout.activity_login);
}
}

六、注册登录事件并添加回调

上面都完成后,就可以注册登录按钮事件并添加结果的回调了,然后获取token等信息。

整个登录activity代码如下:

import io.fabric.sdk.android.Fabric;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterAuthToken;
import com.twitter.sdk.android.core.TwitterCore;
import com.twitter.sdk.android.core.TwitterAuthConfig;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.identity.TwitterLoginButton; public class LoginActivity extends AppCompatActivity { private static final String TWITTER_KEY = "app_id";
private static final String TWITTER_SECRET = "app_secret";
TwitterLoginButton loginButton; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TwitterAuthConfig authConfig =
new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new TwitterCore(authConfig));
setContentView(R.layout.activity_login); loginButton = (TwitterLoginButton) findViewById(R.id.twitter_button);
loginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
TwitterAuthToken authToken = result.data.getAuthToken();
String token = authToken.token;
String secret = authToken.secret;
Log.i("token", token);
Log.i("secret", secret);
} @Override
public void failure(TwitterException exception) {
// Do something on failure
}
}); } @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
loginButton.onActivityResult(requestCode, resultCode, data);
}
}

以上就是完整的步骤了,希望对大家有帮助。

android中接入twitter进行第三方登录的更多相关文章

  1. android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法

    这里介绍微信和新浪登录.微信登录和新浪登录都需要申请第三方账号.可以参考官方文档http://dev.umeng.com/social/android/operation#2还是很清晰的. 新浪微博开 ...

  2. Android 中实现分享和第三方登陆---以新浪微博为例

    第三方登陆和分享功能在目前大部分APP中都有,分享功能可以将自己觉得有意义的东西分享给身边的朋友,而第三方登陆可以借助已经有巨大用户基础的平台(如QQ和新浪微博)的账号,让用户在使用自己APP的时候不 ...

  3. 如何在Android中的Activity启动第三方应用程序?

    如何在点击某个按键后,执行启动第三方应用程序界面? /** * <功能描述> 启动应用程序 * * @return void [返回类型说明] */ private void startU ...

  4. twitter集成第三方登录是窗口一直出现闪退的解决方法

    需要创建自己的token,如下图

  5. Android 中模仿 Twitter 实现 Toolbar Indicator

    项目地址:https://github.com/nekocode/ToolbarIndicator

  6. Android中用友盟实现QQ的第三方登录

    //首先应该去友盟的官网注册你的账号,创建一个应用,获得它的APPkey,也可以用它的API上的appkey,下载SDK,下面根据API文档一步步实现就行了. //下面是友盟的APi文档 1.  产品 ...

  7. Android记录16-友盟第三方登录、分享实现

    Android开发记录16-友盟第三方登录.分享实现 2014年博客之星,投票地址username=wwj_748#content" style="font-family: Kai ...

  8. 分享前端Facebook及Twitter第三方登录

    最近公司要求做海外的第三方登录:目前只做了Facebook和Twitter;国内百度到的信息太少VPN FQ百度+Google了很久终于弄好了.但是做第三方登录基本上都有个特点就是引入必须的js,设置 ...

  9. Android 实现QQ第三方登录

    Android 实现QQ第三方登录 在项目中需要实现QQ第三方登录,经过一番努力算是写出来了,现在总结以下,以防以后遗忘,能帮到其他童鞋就更好了. 首先肯定是去下载SDK和DEMO http://wi ...

随机推荐

  1. 2018.11.21 struts2获得servletAPI方式及如何获得参数

    访问servletAPI方式 第一种:通过ActionContext (重点及常用 都是获得原生对象) 原理 Action配置 被引入的配置文件 在页面调用取值 第二种:通过ServletAction ...

  2. caffe卷积层实现

    下图是jiayangqing在知乎上的回答,其实过程就是把image转换成矩阵,然后进行矩阵运算 卷积的实现在conv_layer层,conv_layer层继承了base_conv_layer层,ba ...

  3. Spring Boot 推荐的基础 POM 文件

    名称 说明 spring-boot-starter 核心 POM,包含自动配置支持.日志库和对 YAML 配置文件的支持. spring-boot-starter-amqp 通过 spring-rab ...

  4. Python基础—02-数据类型

    数据类型 存储单位 最小单位是bit,表示二进制的0或1,一般写作b 最小的存储单位是字节,用byte表示,1B = 8b 1024B = 1KB 1024KB = 1MB 1024MB = 1GB ...

  5. udt的java版本judt项目持续升级1.2版本

    修改了一些问题,努力兼容udt4版本.具体内容查看项目更新说明: 当前项目版本1.2 地址:https://github.com/jinyuttt/judt

  6. HTML5新标签的兼容性处理

    普通浏览器 普通不支持HTML5新标签的浏览器 -- 能正常解析,但会当初成 inline 元素对待 在不支持HTML5新标签的浏览器里,会将这些新的标签解析成行内元素(inline)对待,所以我们只 ...

  7. deprecate (声明不赞成)

    deprecate (声明不赞成)  只是不赞成,不影响使用,或者你升级包 解决:update to 高版本 npm update [-g] [<pkg>...]

  8. POJ 1180 Batch Scheduling (dp,双端队列)

    #include <iostream> using namespace std; + ; int S, N; int T[MAX_N], F[MAX_N]; int sum_F[MAX_N ...

  9. Percona-Tookit工具包之pt-table-sync

      Preface       We've used pt-table-checksum to checksum the different table data bwtween replicatio ...

  10. mysql 使用 FIND_IN_SET 来查询数据

    mysql中find_in_set函数很有意思,它的功能是查找以英文逗号隔开的值,我们可以将数据存储类似为1,2,3,4格式.今天我们就来看看在thinkphp中怎样正确地使用find_in_set函 ...