在應用中接入Twitter進行第三方登錄時,開發人員遇到了一點問題,主要是概念有點混亂,這裡把經驗記錄一下,幫助遇到同樣問題的朋友。 一、註冊應用並配置登錄許可權 這一步比較簡單,就不多說了,直接去官網添加應用,給讀寫許可權就行了。 網址:https://dev.twitter.com/apps 這一步
在應用中接入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);
}
}
以上就是完整的步驟了,希望對大家有幫助。