android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
来源:互联网 发布:Linux测试telnet 编辑:程序博客网 时间:2024/06/04 18:24
在上一篇实现了用户授权页面的UI,如上图,接下来要做的就是在这个基础上完成功能部分真正实现用户的授权认证,这一篇是android开发我的新浪微博客户端-OAuth篇(2.1)的具体应用篇原理就不多解释了不懂的看OAuth篇即可。认证过程从点击开始按钮然后跳转到新浪的授权页面,接着用户在新浪的页面里输入自己的账户和密码确定后返回用户授权页面。首先给开始按钮添加点击事件代码,代码中主要是调用我们前面android开发我的新浪微博客户端-OAuth篇(2.1)完成的OAuth类的RequestAccessToken方法用来获取oauth_verifier,具体代码如下:
ImageButton stratBtn=(ImageButton)diaView.findViewById(R.id.btn_start); stratBtn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { auth=new OAuth(); auth.RequestAccessToken(AuthorizeActivity.this, CallBackUrl); } });
上面的代码中重点来说明一下 RequestAccessToken方法的第二参数CallBackUrl,这个参数是用户在新浪的页面中输入账户密码后完成认证后返回的地址,我这里是这样设置的CallBackUrl = "myapp://AuthorizeActivity",在AndroidManifest.xml中配置给AuthorizeActivity添加如下配置把myapp://AuthorizeActivity指向到AuthorizeActivity,这样当页面返回到AuthorizeActivity中就可以获取到传过来的oauth_verifier参数。
<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:scheme="myapp" android:host="AuthorizeActivity" /> </intent-filter>
再AuthorizeActivity如果来接收返回的oauth_verifier参数呢?接下来在AuthorizeActivity添加如下方法:
@Overrideprotected void onNewIntent(Intent intent) { super.onNewIntent(intent); //在这里处理获取返回的oauth_verifier参数}
关于onNewIntent的说明是这样的,onCreate是用来创建一个Activity也就是创建一个窗体,但一个Activty处于任务栈的顶端,若再次调用startActivity去创建它,则不会再次创建。若你想利用已有的Acivity去处理别的Intent时,你就可以利用onNewIntent来处理。在onNewIntent里面就会获得新的Intent,在这里AuthorizeActivity是属于已有的Acivity,所以需要onNewIntent来处理接收返回的参数,获取oauth_verifier参数后OAuth还没有结束从android开发我的新浪微博客户端-OAuth篇(2.1)描述来看还需要进行根据这个参数继续向新浪微博请求获取User_id、Access Token和Access Secret,在这里我把这些操作全部写在了GetAccessToken方法中。在onNewIntent添加如下代码:
UserInfo user= auth.GetAccessToken(intent);if(user!=null){ DataHelper helper=new DataHelper(this); String uid=user.getUserId(); if(helper.HaveUserInfo(uid)) { helper.UpdateUserInfo(user); Log.e("UserInfo", "update"); }else { helper.SaveUserInfo(user); Log.e("UserInfo", "add"); } }
通过上面的代码完成了User_id、Access Token和Access Secret 获取并且保存到了sqlite库中,这样就完成了用户的OAuth认证,当需要调用新浪的api时只需要去sqlite库中找该用户的User_id、Access Token和Access Secret 即可。到这里本篇就结束了,请关注下一篇。
- android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
- android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
- android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
- android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
- android开发我的新浪微博客户端-用户授权页面UI篇(3.1)
- android开发我的新浪微博客户端-用户首页面功能篇(5.2)
- android开发我的新浪微博客户端-用户首页面功能篇(5.2)
- android开发我的新浪微博客户端-登录页面功能篇(4.2)
- android开发我的新浪微博客户端-登录页面功能篇(4.2)
- android开发我的新浪微博客户端-登录页面功能篇
- iphone开发我的新浪微博客户端-用户登录OAuth授权认证篇(1.3)
- iphone开发我的新浪微博客户端-用户登录OAuth授权认证篇(1.3)
- android开发我的新浪微博客户端-用户首页面UI篇(5.1)
- android开发我的新浪微博客户端-用户首页面UI篇(5.1)
- android开发我的新浪微博客户端-用户首页面UI篇(5.1)
- android开发我的新浪微博客户端-阅读微博功能篇(6.2)
- android开发我的新浪微博客户端-阅读微博功能篇(6.2)
- android开发我的新浪微博客户端-载入页面UI篇(1.1)
- hdu-2178猜数字(二分策略)
- android开发我的新浪微博客户端-载入页面sqlite篇(1.2)
- Linux进程调度(2):CFS调度操作
- 如何利用js 控制 页面元素的隐藏显示
- android开发我的新浪微博客户端-用户授权页面UI篇(3.1)
- android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
- 第五周任务(二)
- jQuery Ajax 全解析
- IOCP的几点开发心得
- ORA-01207 old control file完全解决方案
- android开发我的新浪微博客户端-登录页面UI篇(4.1)
- UNIX里面关于标准IO的几种缓冲机制
- mobile之 手机组成常识
- DML、DCL、DDL、DQL的介绍和区别(10级学员 姚荣旺课堂总结)