我在使用twitter进行身份验证后遇到回调问题。 我在onNewItem上获得了令牌但网页仍然存在。
这是我的代码
public class TwitterRequest extends Activity {
private Twitter niceTwitter;
public RequestToken niceRequestToken;
private Twitter twitter;
private RequestToken requestToken;
public final static String TWIT_KEY = "dsadsdsdsads";
public final static String TWIT_SECRET = "sdsdsdsd";
public final static String TWIT_URL = "callbackapp://tweeter";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
niceTwitter = new TwitterFactory().getInstance();
niceTwitter.setOAuthConsumer(TWIT_KEY, TWIT_SECRET);
niceRequestToken = null;
try {
niceRequestToken = niceTwitter.getOAuthRequestToken(TWIT_URL);
} catch (TwitterException e) {
e.printStackTrace();
Dbg.p("niceRequestToken: " + niceRequestToken);
}
String authURL = niceRequestToken.getAuthenticationURL();
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authURL)));
}
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri twitURI = intent.getData();
Intent response = new Intent();
if (twitURI != null && twitURI.toString().startsWith(TWIT_URL)) {
String oaVerifier = twitURI.getQueryParameter("oauth_verifier");
try {
AccessToken accToken = niceTwitter.getOAuthAccessToken(
niceRequestToken, oaVerifier);
String token = accToken.getToken();
response.putExtra("token", token);
} catch (TwitterException te) {
Log.e("tag",
"Failed to get access token: " + te.getMessage());
response.putExtra("token", "error");
}
setResult(RESULT_OK, response);
finish();
}
}
}
当网页打开时,我在Twitter登录,我收到令牌,但浏览器可见,android不关闭页面。
这是我的清单
<activity
android:name=".activities.twitter.TwitterRequest"
android:launchMode="singleInstance" >
<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:host="tweeter"
android:scheme="callbackapp" />
</intent-filter>
</activity>
答案 0 :(得分:1)
问题是您启动了一个启动浏览器应用程序的新活动。
此时您有2项活动。当你在第一个活动上调用finish()时,第二个活动仍会停留。
我建议您在活动中设置WebView
,这样就可以控制网页的可见性
答案 1 :(得分:0)
尝试以下修改后的清单活动条目
<activity
android:name=".activities.twitter.TwitterRequest"
android:launchMode="singleTask" >
<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:host="callback"
android:scheme="x-oauthflow-twitter" />
</intent-filter>
</activity>