我正在尝试使用twitter集成在Twitter上发布推文。我的项目第一次工作正常,同时发布推文和推文成功发布但在第二次弹出时显示如下。如果我关闭片段然后重新开始然后它工作正常,但如果我试图第二次发布推文它没有关闭它显示弹出窗口。 Logcat显示 -
https://api.twitter.com/oauth/authorize?oauth_token=xyz
弹出式节目 -
![在此处输入图片说明] [1]
问题可能是因为第二次请求令牌无法访问..我使用以下代码访问请求令牌..
protected String doInBackground(String... args) {
try {
if(requestTokenFirstTime) {
requestToken = twitter.getOAuthRequestToken();
requestTokenFirstTime = false;
SharedPreferences.Editor edit = pref.edit();
edit.putString("Request_TOKEN", requestToken.getToken());
edit.putString("Request_TOKEN_SECRET", requestToken.getTokenSecret());
edit.commit();
requestTokenFirstTime = false;
}
else {
requestToken = new RequestToken(pref.getString("Request_TOKEN", ""), pref.getString("Request_TOKEN_SECRET", ""));
}
oauth_url = requestToken.getAuthorizationURL();
} catch (TwitterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return oauth_url;
}
如果我删除其他部分并尝试每次请求令牌,那么应用程序崩溃显示以下错误说"访问令牌已经可用..
我尝试通过添加
来使accessToken无效 twitter.setOAuthAccessToken(null);
twitter.setOAuth2Token(null);
在onPostExecute()内部,但也没有工作..
答案 0 :(得分:0)
这解决了我的问题..
private class LoginProcess implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (requestTokenFirstTime)
{
new TokenGet().execute();
}
else
{
Fragment profile = new ProfileFragment();
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
ft.replace(R.id.frame_container, profile);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
}
}
private class TokenGet extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... args) {
try {
requestToken = twitter.getOAuthRequestToken();
requestTokenFirstTime = false;
SharedPreferences.Editor edit = pref.edit();
edit.putString("Request_TOKEN", requestToken.getToken());
edit.putString("Request_TOKEN_SECRET", requestToken.getTokenSecret());
edit.commit();
requestTokenFirstTime = false;
oauth_url = requestToken.getAuthorizationURL();
} catch (TwitterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return oauth_url;
}