200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 新浪微博Android客户端开发之OAuth认证篇

新浪微博Android客户端开发之OAuth认证篇

时间:2021-12-27 12:34:59

相关推荐

新浪微博Android客户端开发之OAuth认证篇

新浪微博客户端开发之OAuth认证篇

7月29日新浪微博客户端开发

OAuth2.0授权机制我在这里就不浪费口舌了,有很多大牛都发表过相关的文章解释OAuth2.0认证的流程,我就随便找了一张图片把这部分内容略过。

在新浪微博API中呢,如何去实现这个认证流程是下面要说的: 实现步骤: 1. 下载新浪微博Android SDK,去新浪开发平台那里找去。 2. 创建项目,这里是OauthTest 2. 解压SDK压缩包,知道jar把它导入到项目当中

项目文档结构如下:

运行项目效果:

这里要说一下,我用的jar包并不是最新版的SDK,因为我测试过最新的这个“weiboSDK2.1_130712.jar”,在授权的时候会出现NumberFormatException的错误,我也不知道是为什么,所以我换了前面的一个版本: weibo.sdk.android.sso.jar,就可以正确地获取access_token和expires_in,童鞋们可以自己去试一下。

下面是项目代码: 1.首先增加权限[html]view plaincopyprint? <uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2./OauthTest/src/com/weibo/sdk/android/demo/MainActivity.java[java]view plaincopyprint? packagecom.weibo.sdk.android.demo;importjava.text.SimpleDateFormat;importjava.util.Date;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.TextView;importandroid.widget.Toast;importcom.weibo.sdk.android.Oauth2AccessToken;importcom.weibo.sdk.android.Weibo;importcom.weibo.sdk.android.WeiboAuthListener;importcom.weibo.sdk.android.WeiboDialogError;importcom.weibo.sdk.android.WeiboException;importcom.weibo.sdk.android.keep.AccessTokenKeeper;publicclassMainActivityextendsActivity{privateWeibomWeibo;//Weibo引用对象publicstaticOauth2AccessTokenaccessToken;//访问tokenprivateButtonoauthBtn;privateTextViewmText;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取Weibo引用对象,传入appkey和回调urlmWeibo=Weibo.getInstance(ConstantS.APP_KEY,ConstantS.REDIRECT_URL);mText=(TextView)findViewById(R.id.show);oauthBtn=(Button)findViewById(R.id.oauthBtn);MainActivity.accessToken=AccessTokenKeeper.readAccessToken(this);oauthBtn.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){mWeibo.authorize(MainActivity.this,newAuthDialogListener());}});}publicclassAuthDialogListenerimplementsWeiboAuthListener{@OverridepublicvoidonCancel(){//Oauth2.0认证过程中,如果认证窗口被关闭或认证取消时调用Toast.makeText(getApplicationContext(),"Authcancel",Toast.LENGTH_LONG).show();}@OverridepublicvoidonComplete(Bundlevalues){//认证结束后调用此方法Stringtoken=values.getString("access_token");//表明用户身份的token,用于微博API的调用Stringexpires_in=values.getString("expires_in");//过期时间,用于判断登录是否过程System.out.println(expires_in);MainActivity.accessToken=newOauth2AccessToken(token,expires_in);Stringdate=newSimpleDateFormat("yyyy/MM/ddHH:mm:ss").format(newjava.util.Date(MainActivity.accessToken.getExpiresTime()));mText.setText("认证成功:\r\naccess_token:"+token+"\r\n"+"expires_in:"+expires_in+"\r\n有效期:"+date);AccessTokenKeeper.keepAccessToken(MainActivity.this,accessToken);Toast.makeText(MainActivity.this,"认证成功",Toast.LENGTH_SHORT).show();}@OverridepublicvoidonError(WeiboDialogErrore){//Oauth2.0认证过程中,当认证对话框中的webView接收数据出现错误时调用此方法Toast.makeText(getApplicationContext(),"Autherror:"+e.getMessage(),Toast.LENGTH_LONG).show();}@OverridepublicvoidonWeiboException(WeiboExceptione){//当认证过程中捕获到WeiboException时调用Toast.makeText(getApplicationContext(),"Authexception:"+e.getMessage(),Toast.LENGTH_LONG).show();}}}

3./OauthTest/src/com/weibo/sdk/android/demo/ConstantS.java[java]view plaincopyprint? packagecom.weibo.sdk.android.demo;/***定义一个常量接口,方便管理常量*@authorwwj**/publicinterfaceConstantS{//应用的key请到官方申请正式的appkey替换APP_KEYpublicstaticfinalStringAPP_KEY="249239496";//替换为开发者REDIRECT_URLpublicstaticfinalStringREDIRECT_URL="";//新支持scope,支持传入多个scope权限,用逗号分隔publicstaticfinalStringSCOPE="email,direct_messages_read,direct_messages_write,"+"friendships_groups_read,friendships_groups_write,statuses_to_me_read,"+"follow_app_official_microblog";}

原本SCOPE是要用在新版的SDK中,这是新增的一个参数 方法声明是这样的:

public static WeibogetInstance(java.lang.StringappKey,java.lang.StringredirectUrl,java.lang.StringaScope)

微博初始化函数,需要优先其他函数调用.如果appKey或redirectUrl为空,默认抛出RuntimeException参数:appKey- 第三方应用的appkeyredirectUrl- 第三方应用的回调页返回:Weibo的实例抛出:java.lang.RuntimeException

4./OauthTest/src/com/weibo/sdk/android/keep/AccessTokenKeeper.java[java]view plaincopyprint? packagecom.weibo.sdk.android.keep;importandroid.content.Context;importandroid.content.SharedPreferences;importandroid.content.SharedPreferences.Editor;importcom.weibo.sdk.android.Oauth2AccessToken;/***该类用于保存Oauth2AccessToken到sharepreference,并提供读取功能**@authorwwj**/publicclassAccessTokenKeeper{privatestaticfinalStringPREFERENCES_NAME="com_weibo_sdk_android";/***保存accsssToken到SharedPreferences*@paramcontext上下文对象*@paramtokenOauth2AccessToken*/publicstaticvoidkeepAccessToken(Contextcontext,Oauth2AccessTokentoken){SharedPreferencespref=context.getSharedPreferences(PREFERENCES_NAME,Context.MODE_APPEND);Editoreditor=pref.edit();editor.putString("token",token.getToken());editor.putLong("expiresTime",token.getExpiresTime());mit();}/***清空sharedPreferences*@paramcontext*/publicstaticvoidclear(Contextcontext){SharedPreferencespref=context.getSharedPreferences(PREFERENCES_NAME,Context.MODE_APPEND);Editoreditor=pref.edit();editor.clear();mit();}/***从SharedPreferences读取accessToken*@paramcontext*@returnOauth2AccessToken*/publicstaticOauth2AccessTokenreadAccessToken(Contextcontext){Oauth2AccessTokentoken=newOauth2AccessToken();SharedPreferencespref=context.getSharedPreferences(PREFERENCES_NAME,Context.MODE_APPEND);token.setToken(pref.getString("token",""));token.setExpiresTime(pref.getLong("expiresTime",0));returntoken;}}

以上就是简单的实现了第三方程序访问用户微博授权,没有太复杂的地方,主要是为了熟悉新浪微博的授权过程。

原:/wwj_748/article/details/9621051

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。