如何在 Android SDK 中使用 Twitter Api 获取用户对象?
How to get User Object using Twitter Api in Android SDK?
我正在创建一个 Android 应用程序。我在 Android.
中使用 Twitter 集成
我的需要
我想从此处所述的 Twitter 访问用户对象 https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/user-object
我的作品
我使用 Twitter 成功实现了登录。
这是我的主要 Activity 代码 ::
public class MainActivity extends AppCompatActivity {
TwitterLoginButton loginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TwitterConfig config = new TwitterConfig.Builder(this)
.logger(new DefaultLogger(Log.DEBUG))
.twitterAuthConfig(new TwitterAuthConfig(getString(R.string.twitter_consumer_key), getString(R.string.twitter_consumer_secret)))
.debug(true)
.build();
Twitter.initialize(config);
setContentView(R.layout.activity_main);
loginButton = (TwitterLoginButton) findViewById(R.id.login_button);
loginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
// Do something with result, which provides a TwitterSession for making API calls
TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
TwitterAuthToken authToken = session.getAuthToken();
String token = authToken.token;
String secret = authToken.secret;
Intent intent =new Intent(getApplicationContext(), ProfilePage.class);
intent.putExtra("token",token);
startActivity(intent);
}
@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);
// Pass the activity result to the login button.
loginButton.onActivityResult(requestCode, resultCode, data);
}
}
我的问题:
现在我想访问 Twitter Api 的用户对象。我不知道怎么办。请告诉如何调用和获取对象。
可以通过 Retrofit 使用 API 调用获取用户对象。
如果您已经包含 Twitter 套件,则不必在您的项目中明确包含 Retrofit。
使用 twitter-kit 中提供的新 OAuth1aInterceptor
创建 Retrofit 对象。
retrofit = new Retrofit.Builder()
.baseUrl("https://api.twitter.com/1.1/")
.addConverterFactory(GsonConverterFactory.create())
// Twitter interceptor
.client(new OkHttpClient.Builder()
.addInterceptor(new OAuth1aInterceptor(/*twitter-session*/, /*twitter-auth-config*/))
.build())
.build();
照常为 Retrofit Client
创建一个 Interface
。
import com.twitter.sdk.android.core.models.User;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface ApiInterface {
@GET("users/show.json")
Call<User> getUserDetails(@Query("screen_name") String screenName);
}
调用ApiInterface
函数getUserDetails()
ApiInterface apiInterface = retrofit.create(ApiInterface.class);
Call<User> call = apiInterface.getUserDetails(/*screen-name*/);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
}
@Override
public void onFailure(Call<User> call, Throwable t) {
}
});
twitter-session : 这可以从 TwitterCore.getInstance().getSessionManager().getActiveSession()
.
中获取
twitter-auth-config : 这可以从 TwitterCore.getInstance().getAuthConfig()
获取
screen-name : screen-name
即登录用户的 twitter-handle
可以从当前活动会话中获取 /*session*/.getUserName()
~推特API参考索引https://developer.twitter.com/en/docs/api-reference-index
我正在创建一个 Android 应用程序。我在 Android.
中使用 Twitter 集成我的需要
我想从此处所述的 Twitter 访问用户对象 https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/user-object
我的作品
我使用 Twitter 成功实现了登录。
这是我的主要 Activity 代码 ::
public class MainActivity extends AppCompatActivity {
TwitterLoginButton loginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TwitterConfig config = new TwitterConfig.Builder(this)
.logger(new DefaultLogger(Log.DEBUG))
.twitterAuthConfig(new TwitterAuthConfig(getString(R.string.twitter_consumer_key), getString(R.string.twitter_consumer_secret)))
.debug(true)
.build();
Twitter.initialize(config);
setContentView(R.layout.activity_main);
loginButton = (TwitterLoginButton) findViewById(R.id.login_button);
loginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
// Do something with result, which provides a TwitterSession for making API calls
TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
TwitterAuthToken authToken = session.getAuthToken();
String token = authToken.token;
String secret = authToken.secret;
Intent intent =new Intent(getApplicationContext(), ProfilePage.class);
intent.putExtra("token",token);
startActivity(intent);
}
@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);
// Pass the activity result to the login button.
loginButton.onActivityResult(requestCode, resultCode, data);
}
}
我的问题:
现在我想访问 Twitter Api 的用户对象。我不知道怎么办。请告诉如何调用和获取对象。
可以通过 Retrofit 使用 API 调用获取用户对象。 如果您已经包含 Twitter 套件,则不必在您的项目中明确包含 Retrofit。
使用 twitter-kit 中提供的新
OAuth1aInterceptor
创建 Retrofit 对象。retrofit = new Retrofit.Builder() .baseUrl("https://api.twitter.com/1.1/") .addConverterFactory(GsonConverterFactory.create()) // Twitter interceptor .client(new OkHttpClient.Builder() .addInterceptor(new OAuth1aInterceptor(/*twitter-session*/, /*twitter-auth-config*/)) .build()) .build();
照常为
Retrofit Client
创建一个Interface
。import com.twitter.sdk.android.core.models.User; import retrofit2.Call; import retrofit2.http.GET; import retrofit2.http.Query; public interface ApiInterface { @GET("users/show.json") Call<User> getUserDetails(@Query("screen_name") String screenName); }
调用
ApiInterface
函数getUserDetails()
ApiInterface apiInterface = retrofit.create(ApiInterface.class); Call<User> call = apiInterface.getUserDetails(/*screen-name*/); call.enqueue(new Callback<User>() { @Override public void onResponse(Call<User> call, Response<User> response) { } @Override public void onFailure(Call<User> call, Throwable t) { } });
twitter-session : 这可以从 TwitterCore.getInstance().getSessionManager().getActiveSession()
.
twitter-auth-config : 这可以从 TwitterCore.getInstance().getAuthConfig()
screen-name : screen-name
即登录用户的 twitter-handle
可以从当前活动会话中获取 /*session*/.getUserName()
~推特API参考索引https://developer.twitter.com/en/docs/api-reference-index