如何在使用 Twitter 登录后获取用户数据 API
How to get user data after login with Twitter API
我用 Twitter API 做了一个简单的 Twitter 登录,得到了一些用户的数据。在 javaDocs 中,有一个 User 模型,其中包含用户的所有信息。我想访问这些数据。我只是不知道如何真正得到它们。!?
我的代码:
public class MainActivity extends AppCompatActivity {
public TwitterLoginButton loginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Twitter.initialize(this);
TwitterConfig config = new TwitterConfig.Builder(this)
.logger(new DefaultLogger(Log.DEBUG))
.twitterAuthConfig(
new TwitterAuthConfig(getString(R.string.com_twitter_sdk_android_CONSUMER_KEY),
getString(R.string.com_twitter_sdk_android_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
Log.i("Twitter response ", result.data.getUserName());
}
@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);
for (String key : data.getExtras().keySet()) {
Log.d("Bundle Debug", key + " = \"" + data.getExtras().get(key) + "\"");
}
}
logcat
// logcat: Bundle Debug log
user_id = "519****"
screen_name = "Alaa****"
tk = "519644856************************"
ts = "s0RkdolPk************************"
经过大量研究,我想通了。 Twitter Kit
提供了一种访问其 api 请求的简单方法。
当我成功登录时,我得到一个TwitterSession
。然后使用此会话,我可以设置 TwitterApiClient
并使用 AccountService.verifyCredentials()
,它为我提供了包含所有数据的用户对象。
代码如下:
loginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient();
AccountService service = twitterApiClient.getAccountService();
service.verifyCredentials(false, false, false).enqueue(new Callback<User>() {
@Override
public void success(Result<User> result) {
// I converted the user object into json for readability purposes
User user = result.data;
Gson gson = new Gson();
String jsonData = gson.toJson(user);
Log.i("Json> User ", jsonData + "");
}
@Override
public void failure(TwitterException exception) {
}
});
}
@Override
public void failure(TwitterException exception) {
// Do something on failure
}
});
我用 Twitter API 做了一个简单的 Twitter 登录,得到了一些用户的数据。在 javaDocs 中,有一个 User 模型,其中包含用户的所有信息。我想访问这些数据。我只是不知道如何真正得到它们。!?
我的代码:
public class MainActivity extends AppCompatActivity {
public TwitterLoginButton loginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Twitter.initialize(this);
TwitterConfig config = new TwitterConfig.Builder(this)
.logger(new DefaultLogger(Log.DEBUG))
.twitterAuthConfig(
new TwitterAuthConfig(getString(R.string.com_twitter_sdk_android_CONSUMER_KEY),
getString(R.string.com_twitter_sdk_android_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
Log.i("Twitter response ", result.data.getUserName());
}
@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);
for (String key : data.getExtras().keySet()) {
Log.d("Bundle Debug", key + " = \"" + data.getExtras().get(key) + "\"");
}
}
logcat
// logcat: Bundle Debug log
user_id = "519****"
screen_name = "Alaa****"
tk = "519644856************************"
ts = "s0RkdolPk************************"
经过大量研究,我想通了。 Twitter Kit
提供了一种访问其 api 请求的简单方法。
当我成功登录时,我得到一个TwitterSession
。然后使用此会话,我可以设置 TwitterApiClient
并使用 AccountService.verifyCredentials()
,它为我提供了包含所有数据的用户对象。
代码如下:
loginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient();
AccountService service = twitterApiClient.getAccountService();
service.verifyCredentials(false, false, false).enqueue(new Callback<User>() {
@Override
public void success(Result<User> result) {
// I converted the user object into json for readability purposes
User user = result.data;
Gson gson = new Gson();
String jsonData = gson.toJson(user);
Log.i("Json> User ", jsonData + "");
}
@Override
public void failure(TwitterException exception) {
}
});
}
@Override
public void failure(TwitterException exception) {
// Do something on failure
}
});