【发布时间】:2013-12-17 16:26:21
【问题描述】:
处理这种新型身份验证的传统方式是 twitter 实现的。我不认为我做对了,现在我有这个活动:
因此,用户为了验证应用程序,他们必须获得一个 pin,他们必须通过单击 get Pin 按钮来获得该 pin。
有这个代码:
@
Override
protected String doInBackground(Void...params) {
String s = null;
twitter = TwitterFactory.getSingleton();
twitter.setOAuthConsumer("XXXX", "XXXXX");
try {
requestToken = twitter.getOAuthRequestToken();
s = requestToken.getAuthorizationURL();
} catch (TwitterException e) {
e.printStackTrace();
}
return s;
}
@
Override
protected void onPostExecute(String url) {
Intent intent = new Intent(AuthenticateActivity.this, Oauth_web_view.class);
intent.putExtra("url", url);
startActivity(intent);
}
}
这会将他们带到另一个活动,这只是一个 webview 并让他们获取他们的 pin,然后他们输入他们的 pin,他们必须提交 pin,然后他们按下提交 pin 按钮有这个代码。
class AddUserCreds extends AsyncTask < Void, String, String > {
@
Override
protected String doInBackground(Void...urls) {
//String url = urls[0];
String pin = txtPin.getText().toString();
System.out.println(pin);
// try{
// if(pin.length() > 0){
try {
accessToken = twitter.getOAuthAccessToken(requestToken, pin);
// Shared Preferences
Editor e = mSharedPreferences.edit();
// After getting access token, access token secret
// store them in application preferences
e.putString("PREF_KEY_OAUTH_TOKEN", accessToken.toString());
// Store login status - true
e.putBoolean("PREF_KEY_TWITTER_LOGIN", true);
e.commit(); // save changes
Log.e("Twitter OAuth Token", "> " + accessToken.getToken());
} catch (TwitterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// }
// } catch (TwitterException te) {
// if(401 == te.getStatusCode()){
// // System.out.println("Unable to get the access token.");
// }else{
// te.printStackTrace();
// }
// }
return "done";
//
}
@
Override
protected void onPostExecute(String url) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(AuthenticateActivity.this);
alertDialogBuilder.setMessage("You've been authenticated" + url);
alertDialogBuilder.show();
}
它工作过一次,它把我的 twitter 开发者帐户添加到我创建的一个假帐户中,但现在如果我再次运行它,它会中断,因为它已经过身份验证。有没有办法测试我是否已经通过身份验证?所以他们不必经历这个过程?是否有更简化的身份验证流程?
【问题讨论】: