适用于Android的Twitter客户端Oauth身份验证

时间:2011-10-10 20:10:57

标签: android oauth twitter twitter-oauth android-twitter

我正在使用Oauth1.0为Android构建一个Twitter客户端,我被卡在中间的某个地方

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    OAuthConsumer consumer = new DefaultOAuthConsumer(
            "CONSUMER_KEY",
            "CONSUMER_CUSTOMER_KEY");

    OAuthProvider provider = new DefaultOAuthProvider(
            "https://api.twitter.com/oauth/request_token",
            "https://api.twitter.com/oauth/access_token",
            "https://api.twitter.com/oauth/authorize");

  Toast.makeText(getApplicationContext(), "fetching request token", Toast.LENGTH_SHORT).show();
  try 
  {
        String authUrl = provider.retrieveRequestToken(consumer, OAuth.OUT_OF_BAND);
    //  Toast.makeText(getApplicationContext(), authUrl, Toast.LENGTH_SHORT).show();

        String url = provider.retrieveRequestToken(consumer, OAuth.OUT_OF_BAND);
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND);
        this.startActivity(intent); 


    }


  catch (OAuthMessageSignerException e) 
  {
        // TODO Auto-generated catch block
        e.printStackTrace();
  }
  catch (OAuthNotAuthorizedException e) 
  {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
  catch (OAuthExpectationFailedException e) 
  {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
  catch (OAuthCommunicationException e) 
  {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }



}

现在我已经能够使用此功能进行授权,但只要输入我的用户名和密码,就会出现密码并且不会发生重定向!我想要的是在不输入密码的情况下显示用户的推文!我该怎么办?

先谢谢

1 个答案:

答案 0 :(得分:1)

第一步是阅读dev.twitter.com

上有关OOB身份验证的文档
  

对于真正无法处理完整OAuth流程的应用程序   Twitter也提供带外/ PIN码验证模式   被称为oob。

     

此身份验证流程与完整OAuth几乎完全相同   而不是被引导回您的网站,用户被呈现   使用PIN码。

您需要将用户定向到您的应用程序,以输入提供的PIN码以完成身份验证过程。如果要重定向,请将完整的oAuth1.0a流与服务器组件一起使用,或者使回调URL成为打开Android应用程序的链接。