2015年4月13日 星期一

如何使用在android上使用Twitter的第三方帳號申請(fabric篇)

這是第一次寫筆記
可能寫到自己都看不懂...

網路上大多數都沒有中文的教學
也許這是跟亞洲地區除了日本外使用人數少有關係

之前看過日文的相關文獻要你到
這個網站下載jar檔之後在去用一個很複雜的方式去使用
但是這不是今天要教的

今天要教大家的一個方法是twutter所提供的開發工具
首先你先要具備三樣東西
一個是Android Studio
一個是Twitter帳號
最後就是必須通過Twitter的手機認證

完成之後到這個網站申請 fabric的帳號

等收到信之後就可以開始了

首先透過信件連到認證網頁的登入頁

登入過後請選擇你使用的編譯器

每一種編譯器官方都有很詳細的安裝說明

今天使用的編譯器是android studio
根據插件安裝說明安裝之
後首先右上角點選加號新增APP(因為我之前加過了一個專案所以列表上有顯示)
再來就是選擇需要加入的專案
因為該工具不是單獨為了Twitter製做的所以有其他SDK可供選擇
這邊選擇中間的Twitter
再來此項工具會幫你替換專案中的相關檔案
在來會跟告訴你之後使用上有哪些地方需要注意,與該如何使用,
基本上就是在使用要用import sdk
改寫proguard-com.twitter.sdk.android.twitter.txt
在layout中增加該工具的UI
就這三個地方而以

恭喜你完成初步設定囉
基本上照著官方SDK的引導就能輕鬆使用囉



接下來必須到官方網站去註冊一組API KEY來使用
點選要上角新增APP
填完相關資料
1.APP名稱
2.APP描述
3.APP的詳細介紹或是下載頁面
(不過沒有的話就隨便瑱一個字符就好)
4.OAuth1.0使用的call back頁面
5.最後確認使用規範後記得打勾

再來就是選擇使用的讀寫規則
基本上選擇最後一個就好了
然後在這個頁面上新增需要使用的API KEY
這兩組KEY要用在哪裡呢?
就是使用在替換過內容的專案上的這個部分

  private static final String TWITTER_KEY = "";

private static final String TWITTER_SECRET = "";

接下來要講述oauth的使用方式
官方的登入完成預載之後只要使用
以下程式碼來進行初步環境的建設
import com.twitter.sdk.android.core.AppSession;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterCore;
import com.twitter.sdk.android.core.TwitterException;
...
 
TwitterCore.getInstance().logInGuest(new Callback<AppSession>() {
   @Override
    public void success(Result<AppSession> result) {
        AppSession guestAppSession = result.data;
    }
 
    @Override
    public void failure(TwitterException exception) {
        // unable to get an AppSession with guest auth
    }
});

在補上其他的部分事件監聽
就可以完成了
TwitterApiClient twitterApiClient =  TwitterCore.getInstance().getApiClient(guestAppSession);
twitterApiClient.getSearchService().tweets("#fabric"null,nullnullnull50nullnullnulltruenew Callback() {
    @Override
    public void success(Result<Search> result) {
        // use result tweets
    }
 
    @Override
    public void failure(TwitterException exception) {
        final TwitterApiException apiException = (TwitterApiException) exception;
        final int errorCode = apiException.getErrorCode();
        if (errorCode == TwitterApiConstants.Errors.APP_AUTH_ERROR_CODE || errorCode == TwitterApiConstants.Errors.GUEST_AUTH_ERROR_CODE) {
            // get new guestAppSession
            // optionally retry
        }
    }
});