zoukankan      html  css  js  c++  java
  • android中接入twitter进行第三方登录

    在应用中接入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);
        }
    }
    
    

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

  • 相关阅读:
    [LeetCode] 39. Combination Sum 组合之和
    CSS3
    常见中文字体在CSS中的Unicode编码(宋体:5B8B4F53)
    List<Object> 使用Linq
    查看工作流详情页面
    java程序调用.net接口服务地址的写法
    C# Repeater 嵌套
    JavaScript刷新页面,不重复提交
    Migration-添加表(加外键)
    Migration-添加表
  • 原文地址:https://www.cnblogs.com/lurenjiashuo/p/android-twitter-login.html
Copyright © 2011-2022 走看看