当前位置:操作系统 > 安卓/Android >>

Android:SNS客户端开发一:OAuth认证方法

 

编写微博客户端,最重要的就是用户授权方法。现在主流SNS社区开放API后,基本都采用OAuth认证进行授权。本文主要记录新浪微博1.0a版本的OAuth认证。但是随着2.0版本的逐渐普及,会在今后的加入2.0版本的方法。

 

     有关OAuth认证的理论及相应流程在这里不做过多追述,各大网站上都已经写的十分清晰,这里主要写下我自己的实现方法。对于OAuth认证,这里采用signpost-oauth开源项目。

 

     首先编写一个类,用于存储认证过程中需要用到基本信息。

 

Java代码 

public class SinaConstant {// 新浪OAuth辅助信息类  

 

    // 所分配的APP_KEY  

    public static final String CONSUMER_KEY = "";  

    // 所分配的APP_SECRET  

    public static final String CONSUMER_SECRET = "";  

    // 用于获取未授权的request token  

    public static final String REQUEST_URL = "http://api.t.sina.com.cn/oauth/request_token";  

    // 用于获取access token  

    public static final String ACCESS_URL = "http://api.t.sina.com.cn/oauth/access_token";  

    // 用于对未授权的request token进行授权  

    public static final String AUTHORIZE_URL = "http://api.t.sina.com.cn/oauth/authorize";  

    // 回调地址  

    public static final String OAUTH_CALLBACK_URL = "mysina://CallActivity";  

 

 

public class SinaConstant {// 新浪OAuth辅助信息类

 

       // 所分配的APP_KEY

       public static final String CONSUMER_KEY = "";

       // 所分配的APP_SECRET

       public static final String CONSUMER_SECRET = "";

       // 用于获取未授权的request token

       public static final String REQUEST_URL = "http://api.t.sina.com.cn/oauth/request_token";

       // 用于获取access token

       public static final String ACCESS_URL = "http://api.t.sina.com.cn/oauth/access_token";

       // 用于对未授权的request token进行授权

       public static final String AUTHORIZE_URL = "http://api.t.sina.com.cn/oauth/authorize";

       // 回调地址

       public static final String OAUTH_CALLBACK_URL = "mysina://CallActivity";

 

} 注:1、其中回调地址用于指向从新浪页面授权后跳转到页面;2、对应的key和secret填写新浪微博对应提供的app_key及app_secret

 

     建立一个Activity用于进行添加账号的操作。将改Activity设置为单例模式

 

Xml代码 

<activity 

            android:label="@string/app_name" 

            android:launchMode="singleInstance"            android:name=".AddUserActivity" > 

            <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="CallActivity" 

                    android:scheme="mysina" /> 

            </intent-filter> 

        </activity> 

 

<activity

            android:label="@string/app_name"

            android:launchMode="singleInstance"            android:name=".AddUserActivity" >

            <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="CallActivity"

                    android:scheme="mysina" />

            </intent-filter>

        </activity>注:1、android:launchMode="singleInstance"将该Activity设置为单例;2、data标签与SinaConstant类中的回调地址对应,用于从浏览器回传值时呼出该Activity

 

 

 

    建立AddUserActivity,对应代码如下:

 

 

 

Java代码 

public class AddUserActivity extends Activity {  

    /** Called when the activity is first created. */ 

    Context context;  

    private OAuthConsumer sinaconsumer;  

    private OAuthProvider sinaprovider;  

                private OAuthRequestToken oauthtool;  

public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.usermanager);  

        sinaconsumer = new CommonsHttpOAuthConsumer(SinaConstant.CONSUMER_KEY,SinaConstant.CONSUMER_SECRET);//初始化用

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,