博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
阅读量:4104 次
发布时间:2019-05-25

本文共 2079 字,大约阅读时间需要 6 分钟。

 在实现了用户授权页面的UI,如上图,接下来要做的就是在这个基础上完成功能部分真正实现用户的授权认证,这一篇是的具体应用篇原理就不多解释了不懂的看OAuth篇即可。认证过程从点击开始按钮然后跳转到新浪的授权页面,接着用户在新浪的页面里输入自己的账户和密码确定后返回用户授权页面。首先给开始按钮添加点击事件代码,代码中主要是调用我们前面完成的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参数。

再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还没有结束从
描述来看还需要进行根据这个参数继续向新浪微博请求获取U
ser_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");            }        }
 通过上面的代码完成了U
ser_id、Access Token和Access Secret
 获取并且保存到了sqlite库中,这样就完成了用户的OAuth认证,当需要调用新浪的api时只需要去sqlite库中找该用户的U
ser_id、Access Token和Access Secret
 即可。到这里本篇就结束了,请关注下一篇。

转载地址:http://hodsi.baihongyu.com/

你可能感兴趣的文章
Java编程基础:抽象类和接口
查看>>
Java编程基础:异常处理
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
Spring处理表单提交
查看>>
Spring MVC异常处理
查看>>
Leetcode 1180. Count Substrings with Only One Distinct Letter [Python]
查看>>
PHP 7 的五大新特性
查看>>
php实现socket(转)
查看>>
PHP底层的运行机制与原理
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
PHP7新特性 What will be in PHP 7/PHPNG
查看>>
比较strtr, str_replace和preg_replace三个函数的效率
查看>>
ubuntu 下编译PHP5.5.7问题:configure: error: freetype.h not found.
查看>>
PHP编译configure时常见错误 debian centos
查看>>
configure: error: Please reinstall the BZip2 distribution
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
【增强学习在无人驾驶中的应用】
查看>>
OpenCV meanshift目标跟踪总结
查看>>