The TwitterCore キットでは認証済みTwitter APIリクエストを作成するTwitterApiClientを使用することができます。
現在は以下をサポートしています:
Access Twitter's REST APIThe TwitterCore Kit provides a
|
アプリではTwitterApiClientを使うためのセッションを取得しなければなりません。 TwitterセッションはユーザーがTwitter にログインすることで取得できます。 ユーザーのログインなしでリクエスト作成するために、ゲスト認証を使ってAppセッションを取得することができます。
注意
Appセッションを使ったTwitterApiClient では、ユーザーを識別する情報を必要としないAPIリクエストのみ作成できます。 例えば、Appセッションではツイートをすることができません。
|
Your app must have acquired a Session in order to use the TwitterApiClient. A TwitterSession can be acquired by having a user login with Twitter . To make requests without requiring a user to login, guest authentication can be used to acquire an AppSession.
|
TwitterCore.getInstance().logInGuest(new Callback() {
@Override
public void success(Result appSessionResult) {
// REST API REQUEST...
}
@Override
public void failure(TwitterException e) {
// OOPS
}
});
Appセッション(上記のような)もしくはTwitterセッションを使って認証が感慮すると、TwitterApiClient を使ってAPI リクエストを作ることができるようになります:
Creating an AppSession
TwitterCore.getInstance().logInGuest(new Callback() {
@Override
public void success(Result appSessionResult) {
// REST API REQUEST...
}
@Override
public void failure(TwitterException e) {
// OOPS
}
});
Once you are authenticated via an AppSession (above) or via a TwitterSession you can start using the TwitterApiClient to make API Requests: |
TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient();
// Can also use Twitter directly: Twitter.getApiClient()
StatusesService statusesService = twitterApiClient.getStatusesService();
statusesService.show(524971209851543553L, null, null, null, new Callback<Tweet>() {
@Override
public void success(Result<Tweet> result) {
//Do something with result, which provides a Tweet inside of result.data
}
public void failure(TwitterException exception) {
//Do something on failure
}
});
Tweets
TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient();
// Can also use Twitter directly: Twitter.getApiClient()
StatusesService statusesService = twitterApiClient.getStatusesService();
statusesService.show(524971209851543553L, null, null, null, new Callback<Tweet>() {
@Override
public void success(Result<Tweet> result) {
//Do something with result, which provides a Tweet inside of result.data
}
public void failure(TwitterException exception) {
//Do something on failure
}
});
|
TwitterApiClientは誰でも拡張可能で、Twitter の認証エンドポイントを追加する拡張も行えます。
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterApiClient;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.models.User;
import retrofit.http.Query;
class MyTwitterApiClient extends TwitterApiClient {
public MyTwitterApiClient(TwitterSession session) {
super(session);
}
/**
* CustomService に定義したエンドポイントを設定する
*/
public CustomService getCustomService() {
return getService(CustomService.class);
}
}
// users/show サービスエンドポイントの例
interface CustomService {
@GET("/1.1/users/show.json")
void show(@Query("user_id") long id, Callback<User> cb);
}
注意
TwitterCore キットでは Retrofit を使ってインタフェースを認証済みエンドポイントに変換しています。 追加するエンドポイントはRetrofitで要求される形式に準拠する必要があります。 依存関係を含めて正常にコンパイルできるのであれば、このキットでは必要に応じてOkHTTP を使用することができます。 OkHTTP ではより安定したHTTPスタック、より速いリトライメカニズム、SPDYのサポートが使えるようになります。
ExtensionsTwitterApiClient is fully extensible and can be extended to add additional Twitter authenticated endpoints.
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterApiClient;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.models.User;
import retrofit.http.Query;
class MyTwitterApiClient extends TwitterApiClient {
public MyTwitterApiClient(TwitterSession session) {
super(session);
}
/**
* Provide CustomService with defined endpoints
*/
public CustomService getCustomService() {
return getService(CustomService.class);
}
}
// example users/show service endpoint
interface CustomService {
@GET("/1.1/users/show.json")
void show(@Query("user_id") long id, Callback<User> cb);
}
|