一、代码

1.xml
(1)main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="@string/hello"
  11. />
  12. <Button
  13. android:id="@+id/getRequestTokenButtonId"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:text="获取未授权的Token"
  17. />
  18. </LinearLayout>

(2)AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="org.marsdroid.oauth01" android:versionCode="1"
  4. android:versionName="1.0">
  5. <uses-sdk android:minSdkVersion="10" />
  6.  
  7. <uses-permission android:name="android.permission.INTERNET" />
  8. <uses-permission android:name="android.permission.READ_CONTACTS" />
  9. <application android:icon="@drawable/icon" android:label="@string/app_name">
  10. <activity android:name=".OAuth01Activity" android:label="@string/app_name">
  11. <intent-filter>
  12. <action android:name="android.intent.action.MAIN" />
  13. <category android:name="android.intent.category.LAUNCHER" />
  14. </intent-filter>
  15. </activity>
  16.  
  17. <activity android:name=".PrepareRequestTokenActivity">
  18. <intent-filter>
  19. <action android:name="android.intent.action.VIEW" />
  20. <category android:name="android.intent.category.DEFAULT" />
  21. <category android:name="android.intent.category.BROWSABLE" />
  22. <data android:scheme="x-oauthflow" android:host="callback" />
  23. </intent-filter>
  24. </activity>
  25. </application>
  26. </manifest>

2.java
(1)OAuth01Activity.java

  1. package org.marsdroid.oauth01;
  2.  
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6.  
  7. public class OAuth01Activity extends Activity {
  8.  
  9. /** Called when the activity is first created. */
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. startActivity(new Intent(this,PrepareRequestTokenActivity.class));
  15. }
  16.  
  17. }

(2)Constants.java

  1. package org.marsdroid.oauth01;
  2.  
  3. public class Constants {
  4.  
  5. public static final String CONSUMER_KEY = "99e9494ff07e42489f4ace16b63e1f47";
  6. public static final String CONSUMER_SECRET = "154f6f9ab4c1cf527f8ad8ab1f8e1ec9";
  7.  
  8. public static final String REQUEST_URL = "https://open.t.qq.com/cgi-bin/request_token";
  9. public static final String ACCESS_URL = "https://open.t.qq.com/cgi-bin/access_token";
  10. public static final String AUTHORIZE_URL = "https://open.t.qq.com/cgi-bin/authorize";
  11.  
  12. public static final String ENCODING = "UTF-8";
  13.  
  14. }

(3)PrepareRequestTokenActivity.java

  1. package org.marsdroid.oauth01;
  2.  
  3. import oauth.signpost.OAuthConsumer;
  4. import oauth.signpost.OAuthProvider;
  5. import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
  6. import oauth.signpost.commonshttp.CommonsHttpOAuthProvider;
  7. import android.app.Activity;
  8. import android.os.Bundle;
  9.  
  10. public class PrepareRequestTokenActivity extends Activity {
  11.  
  12. private OAuthConsumer consumer;
  13. private OAuthProvider provider;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. // TODO Auto-generated method stub
  17. super.onCreate(savedInstanceState);
  18.  
  19. consumer = new CommonsHttpOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
  20. provider = new CommonsHttpOAuthProvider(Constants.REQUEST_URL, Constants.ACCESS_URL, Constants.AUTHORIZE_URL);
  21.  
  22. new OAuthRequestTokenTask(this, consumer, provider).execute();
  23. }
  24.  
  25. }

(4)OAuthRequestTokenTask.java

用异步任务

  1. package org.marsdroid.oauth01;
  2.  
  3. import oauth.signpost.OAuthConsumer;
  4. import oauth.signpost.OAuthProvider;
  5. import android.content.Context;
  6. import android.os.AsyncTask;
  7.  
  8. public class OAuthRequestTokenTask extends AsyncTask<Void, Void, Void>{
  9.  
  10. private Context context;
  11. private OAuthConsumer consumer;
  12. private OAuthProvider provider;
  13.  
  14. public OAuthRequestTokenTask(Context context, OAuthConsumer consumer,
  15. OAuthProvider provider) {
  16. super();
  17. this.context = context;
  18. this.consumer = consumer;
  19. this.provider = provider;
  20. }
  21.  
  22. @Override
  23. protected Void doInBackground(Void... params) {
  24. // TODO Auto-generated method stub
  25. try {
  26. System.out.println("请求Request Token之前" + consumer.getToken());
  27. //用户授权要用此url
  28. final String url = provider.retrieveRequestToken(consumer, "null");
  29. System.out.println("请求Request Toker之后" + consumer.getToken());
  30. System.out.println("url---->" + url);
  31. } catch(Exception e) {
  32. // TODO Auto-generated catch block
  33. e.printStackTrace();
  34. }
  35. return null;
  36. }
  37.  
  38. }

ANDROID_MARS学习笔记_S04_001_OAUTH获取request_token的更多相关文章

  1. ANDROID_MARS学习笔记_S03_001_获取蓝牙匹配列表

    一.代码 1.xml(1)AndroidManifest.xml 增加 <uses-permission android:name="android.permission.BLUETO ...

  2. ANDROID_MARS学习笔记_S04_001_OAuth简介

    一.OAuth简介

  3. openresty 学习笔记二:获取请求数据

    openresty 学习笔记二:获取请求数据 openresty 获取POST或者GET的请求参数.这个是要用openresty 做接口必须要做的事情.这里分几种类型:GET,POST(urlenco ...

  4. ANDROID_MARS学习笔记_S04_006_用获取access_token,access_token_secrect

    一.代码流程 1.MainActivity会开启PrepareRequestTokenActivity 2.PrepareRequestTokenActivity会根据配置文件的CONSUMER_KE ...

  5. ANDROID_MARS学习笔记_S05_001_用SensorManager获取传感器

    1. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV ...

  6. ANDROID_MARS学习笔记_S04_007_从服务器获取微博数据时间线

    一.代码 1.xml(1)activity_main.xml <?xml version="1.0" encoding="utf-8"?> < ...

  7. JDBC学习笔记(6)——获取自动生成的主键值&处理Blob&数据库事务处理

    获取数据库自动生成的主键 [孤立的技术是没有价值的],我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. 具体的代码实现: /** * 获取数据 ...

  8. struts2学习笔记--总结获取servletAPI的几种方式

    struts2的Action放弃了request,response等ServletAPI,使得在业务层上更加独立,在有时候使用struts2进行Web开发的时候,不可避免的要在action中使用ser ...

  9. IOS学习笔记之获取Plist文件读取数据

    @property(nonatomic,strong) NSArray *pic; //创建数组属性 @property(nonatomic,assign) int index; //创建索引属性 @ ...

随机推荐

  1. sharedPreference的奇怪bug

    一定要清楚sp的结构,而且要知道是什么类型的.类型不对,会引起很多不知道的bug,比如本来是int类型的值,如果用String的类型去匹配,会让Activity开Activity Thread,不断地 ...

  2. MVC中,查询以异步呈现,分页不用异步的解决方案

    MVC中,查询以异步呈现,分页不用异步的解决方案 这种需求,用一个ASPX页面和一个ASCX分部视图就可以解决了,ASPX提供对ASCX的引用,ASCX显示列表信息,ASPX主页面提供查询功能 < ...

  3. HTML解析引擎:Jumony 开源项目

    Jumony Core首先提供了一个近乎完美的HTML解析引擎,其解析结果无限逼近浏览器的解析结果.不论是无结束标签的元素,可选结束标签的元素,或是标记属性,或是CSS选择器和样式,一切合法的,不合法 ...

  4. struts2基于Convention插件的约定映射使用

    一.首先说明一点:所谓的基于Convention插件的约定优于配置的使用,并不是严格意义上的零配置,struts.xml文件并不能完全舍弃. 获得Convention插件功能,所必需的jar包有:|a ...

  5. C++ GUI Programming with Qt4 笔记 -- chap1

    1. Hello Qt #include <QApplication> #include <QLabel> int main(int argc, char *argv[]){ ...

  6. Linux系统的启动流程以及做个小小的Linux

    内核的作用     进程管理:进程间切换     内存管理:内存空间分割为内核空间和用户空间     IO管理:对底层硬件的使用必须由内来实现,不能由用户空间进程来实现     文件系统管理     ...

  7. jQuery如何检查某个元素在网页上是否存在

    $("ID")获取的永远是对象,即使网页上没有此元素.因此当要用jQuery检查某个元素在网页上是否存在时,不能使用以下代码: if($("#ID")){ // ...

  8. sqlserver字符串转日期

    declare   @str   varchar(15)     declare   @dt   datetime     select   @str='2005-8-26'     set   @d ...

  9. Hibernate持久化对象

    持久化类应遵循的规则: 有无参构造器,构造器的修饰符>=默认访问控制符 有标识属性,映射数据库表的主键,建议使用基本类型的包装类 每个成员有setter和getter 非final修饰的类 重写 ...

  10. BJDP结对编程活动

    7月21日参与了 BJDP北京的活动 在北京首次参与能够参与动手编程活动,感觉挺不错的. 本次活动共有三项内容 1.      金锐分享单元测试的Mocking技术,20 mins 2.      伍 ...