我正在开发的应用程序启动官方Twitter应用程序新帖子屏幕,以便用户可以在意图中添加一些额外文本发布推文。我已经很好地工作了,但是如果用户没有使用Twitter应用程序登录,事情会有点混乱。该应用程序启动但用户必须登录,一旦他们完成了正常的推特屏幕出现,如果他们使用后退按钮返回我的应用程序,新的帖子屏幕实际上显示在回到Twitter提供屏幕后。
在尝试运行意图之前,有什么方法可以检查用户是否实际登录了Twitter应用程序?
答案 0 :(得分:3)
我认为这是一个Twitter应用内部问题,你无法测试它。
另一方面,你可以通过“不再显示此对话框”复选框向用户提供一个Dialog警告,以便他得到建议,并且可以永远地对话。您甚至可以在此对话框中提供在Twitter应用程序中进行身份验证的说明。
答案 1 :(得分:3)
我正在使用twitter4j lib。 在这里,我检查用户名。如果用户名为null,则表示没有用户登录,否则我会收到用户名。此用户名在我以共享首选项存储的访问令牌中可用。
username = mySession.getUsername();
用户名=(username.equals(“”))? “未登录”:用户名;
mySession的代码: -
public class MySession {
private SharedPreferences sharedPref;
private Editor editor;
private static final String TWEET_AUTH_KEY = "auth_key";
private static final String TWEET_AUTH_SECRET_KEY = "auth_secret_key";
private static final String TWEET_USER_NAME = "user_name";
private static final String SHARED = "Twitter_Preferences";
public TwitterSession(Context context) {
sharedPref = context.getSharedPreferences(SHARED, Context.MODE_PRIVATE);
editor = sharedPref.edit();
}
public void storeAccessToken(AccessToken accessToken, String username) {
editor.putString(TWEET_AUTH_KEY, accessToken.getToken());
editor.putString(TWEET_AUTH_SECRET_KEY, accessToken.getTokenSecret());
editor.putString(TWEET_USER_NAME, username);
editor.commit();
}
public void resetAccessToken() {
editor.putString(TWEET_AUTH_KEY, null);
editor.putString(TWEET_AUTH_SECRET_KEY, null);
editor.putString(TWEET_USER_NAME, null);
editor.commit();
}
public String getUsername() {
return sharedPref.getString(TWEET_USER_NAME, "");
}
public AccessToken getAccessToken() {
String token = sharedPref.getString(TWEET_AUTH_KEY, null);
String tokenSecret = sharedPref.getString(TWEET_AUTH_SECRET_KEY, null);
if (token != null && tokenSecret != null)
return new AccessToken(token, tokenSecret);
else
return null;
}
}
希望这会对你有所帮助。
答案 2 :(得分:0)
尝试此功能,然后返回true或false。
True :已登录 错误:未登录
twitter.getAuthorization()
函数如果没有通过处理它登录就会抛出错误,你可以找到用户以前是否登录过。
public static boolean isAuthenticated(SharedPreferences prefs) {
String token = prefs.getString(OAuth.OAUTH_TOKEN, "");
String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, "");
AccessToken a = new AccessToken(token,secret);
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
try {
twitter.getAuthorization();
return true;
} catch (Exception e) {
return false;
}
}
答案 3 :(得分:0)
只需在ur活动
中的oncreate()中添加这些行final Session activeSession = Twitter.getInstance().core.getSessionManager().getActiveSession();
if (activeSession != null){
//do someting
}