這是Twitter的登錄的第一頁,當我點擊取消並返回到應用 我的申請獲得強制關閉。 M使用Twitter4J這 請告訴我什麼可以是問題。
使用此密碼。
void OAuthLogin() {
try {
twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
requestToken = twitter.getOAuthRequestToken(CALLBACKURL);
String authUrl = requestToken.getAuthenticationURL();
this.startActivity(new Intent(Intent.ACTION_VIEW, Uri
.parse(authUrl)));
} catch (TwitterException ex) {
Log.e("in Main.OAuthLogin", ex.getMessage());
}
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
if (uri != null && uri.toString().contains(CALLBACKURL)) {
try {
String verifier = uri.getQueryParameter("oauth_verifier");
AccessToken accessToken = twitter.getOAuthAccessToken(
requestToken, verifier);
String token = accessToken.getToken(), secret = accessToken
.getTokenSecret();
twitter.setOAuthAccessToken(token, secret);
twitter.updateStatus(base_link_url);
this.displayTimeLine(token, secret); // after everything,
} catch (TwitterException ex) {
}
}
}
我的清單文件:使用此代碼M代表我的課
<activity android:name=".Test" android:configChanges="keyboard|keyboardHidden|orientation"
android:screenOrientation="portrait" android:label="@string/app_name"
android:launchMode="singleTask" android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="gauravmusic" android:host="twitt" />
</intent-filter>
</activity>
MY回調URL:使用我的代碼,其中m
private final String CALLBACKURL = "gauravmusic://twitt";
現在推薦我在哪裏,要去錯了。
研究後,我發現,
if (uri != null && uri.toString().contains(CALLBACKURL))
{
}
如果我改變了條件
if (uri != null && uri.getScheme().toString().contains(CALLBACKURL_SCHEME)) {
}
取消,並返回到應用現在工作正常,但現在我無法發佈的tweet在我的牆上。 我一起加入這兩個條件類似的
if (uri != null && uri.getScheme().toString().contains(CALLBACKURL_SCHEME) || uri.toString().contains(CALLBACKURL)) {
}
它也沒有工作.. 請給我建議。
嗨,我找到答案。我發現一個模式,當取消和重新調整到應用程序鏈接被點擊,然後執行此代碼。在這種情況下,我們不會登錄,所以我們無法找到字符串驗證器的值,並且它給出了NullPointer異常。
if (uri != null && uri.toString().contains(CALLBACKURL)) {
try {
String verifier = uri.getQueryParameter("oauth_verifier");
AccessToken accessToken = twitter.getOAuthAccessToken(
requestToken, verifier);
String token = accessToken.getToken(), secret = accessToken
.getTokenSecret();
twitter.setOAuthAccessToken(token, secret);
twitter.updateStatus(base_link_url);
this.displayTimeLine(token, secret); // after everything,
} catch (TwitterException ex) {
}
}
我改變此行
if (uri != null && uri.getScheme().toString().contains(CALLBACKURL_SCHEME)&& !uri.toString().contains("denied"))
一些研究,我發現,當我們點擊取消並返回到應用鏈接它的URI就是這樣
DEBUG/URI!!!!!!!!!!!!!!!!!!!!!(5174): gauravmusic://twittdenied=FjgW7QQYpFDI03sDvIc5I1w6w2Xv67TFI9sKW1OyA
後當我們正式登錄時,Uri就是這樣的
08-17 10:31:19.182: DEBUG/URI(5278): gauravmusic://twitt?oauth_token=pm0E10vayzTViLGQpGZwwpIKhQ9aqwLrEBggiJ7vvPY&oauth_verifier=cHiWkuiQfygmlPeC7B6fNbiqv34gkPIdWctlavzGo80
然後,添加條件
!uri.toString()。包含( 「拒絕」)(BCZ當我們還沒有登錄URI包含 「拒絕」 一個字)
其工作罰款我。 現在,當我點擊取消並返回到應用程序,它不會達到此線或在此循環中。
字符串驗證器= uri。getQueryParameter( 「oauth_verifier」);
現在一切正常。建議我是否有更好的主意來處理這個問題。我不想依賴Uri的「被拒絕」這個詞。
請發佈一些代碼和logcat的堆棧跟蹤。 – 2011-08-12 12:34:36
它可能是任何東西,不可能。可能是一個錯誤。當你沒有提供任何證據時,我很困惑你期望有人能夠幫助你。也許你認爲只有一件事可能是原因。 –
重複? http://stackoverflow.com/questions/7040043/twitter-cancel-and-return-to-app-link-of-login-page-gives-force-close-closed – Joubarc