android开发我的新浪微博客户端-用户授权页面功能篇(3.2)

本文转自:http://www.cnblogs.com/hll2008/archive/2011/01/09/1931174.html

  ==》

      在上一篇实现了用户授权页面的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添加如下方法:

@Override
protected   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 即可。到这里本篇就结束了,请关注下一篇。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值