• 5.腾讯微博Android客户端开发——获取请求用户授权Request Token .


    腾讯微博OAuth认证第二步是获取请求用户授权的Request Token,今天我们就学习如何获取。说是获取Request Token,其实我们的代码目的就是获取一个验证码,有了这个验证码,我们才可以进行下面的授权验证过程。

    首先我们学习下获取Request Token的API:

    用户授权request_token

     

    URLhttps://open.t.qq.com/cgi-bin/authorize

    HTTPS请求方式:GET 

     

    请求参数:

    oauth_token上一步中获得的未授权的Request Token 

     

    使用示例如下:

    https://open.t.qq.com/cgi-bin/authorize?oauth_token=80484decceb142dfaf5791c9cb9cd256

     

    授权后,回调URL

    http://qunmgr.qq.com/oauthapi/callback.php?oauth_token=80484decceb142dfaf5791c9cb9cd256&oauth_verifier=335566

    说明:

    此页面中会要求用户登陆,然后选择同意或者拒绝对应用授权

    ②授权成功后:

    A: web应用会重定向到oauth_callback所指定的URL(含返回参数)。

    B: 客户端应用(oauth_callback=null)会在网页中给出授权码,用户需要手工将验证码输入到应用中才能完成授权流程。

    撇开说明,我们先看下API介绍,获取请求用户授权Request Token的URL为https://open.t.qq.com/cgi-bin/authorize,参数只有一个,即oauth_token,它的值为获取未授权的Request Token返回结果中的oauth_token。这个我们可以从上一节介绍的getRequestToken()方法获取。有了请求路径和请求参数后,我们就可以模拟Http请求,代码如下:  

    1. getRequestToken();  
    2. url = "https://open.t.qq.com/cgi-bin/authorize";  
    3. httpMethod = "GET";  
    4. params = "oauth_token=" + oauthToken;  
    5. try  
    6. {  
    7.     SyncHttp http = new SyncHttp();  
    8.     String response = http.httpGet(url, params);  
    9.     System.out.println(response);  
    10. catch (Exception e)  
    11. {  
    12.     e.printStackTrace();  
    13. }  

    运行程序,控制台输入如下代码: 

     

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">......</html>  

     

    服务器返回的信息为html页面,并不是我们所需要的结果,这说明我们处理流程有问题,这是我们再看下说明的第一点:此页面中会要求用户登陆,然后选择同意或者拒绝对应用授权。当我们请求后,腾讯微博认证平台会重定向到用户登陆的界面,因此我们必须在Android系统中使用浏览器提交请求,然后才能正确的显示登陆界面,修改后代码如下:  

    1. /** 
    2.  * 获取授权码 
    3.  */  
    4. protected void getVerifier()  
    5. {  
    6.     String url = "https://open.t.qq.com/cgi-bin/authorize";  
    7.     Weibo weibo = new Weibo();  
    8.     //修改getRequestToken()方法,返回结果为HashMap   
    9.     Map<String, String> map = weibo.getRequestToken();  
    10.     //获取oauth_token   
    11.     String oauthToken = map.get("oauth_token");  
    12.     //构造请求的URL   
    13.     StringBuilder urlBuilder = new StringBuilder();  
    14.     urlBuilder.append(url);  
    15.     urlBuilder.append("?");  
    16.     urlBuilder.append("oauth_token="+oauthToken);  
    17.     Uri uri = Uri.parse(urlBuilder.toString());   
    18.     //通过Intent代码Android系统的浏览器   
    19.     Intent intent = new Intent(Intent.ACTION_VIEW, uri);  
    20.     startActivity(intent);  
    21. }  

    运行程序后首先模拟器显示的界面如下: 

    当我们点击Button后会执行上面的getVerifier()方法,请求后浏览器会重定向到QQ登陆界面,注意该界面是腾讯给我们提供的,保证了用户帐号的安全 

    输入QQ号和密码,然后点击授权,然后腾讯开放平台会返回授权码给我们,我们使用该授权码可进行进一步的授权操作,在下一节中给大家讲解。 

     

    课程下载地址:http://u.115.com/file/e6ct17hg

    文档下载地址:http://download.csdn.net/source/3405214

    源码下载地址:http://u.115.com/file/e6ct266h

    原文:http://blog.csdn.net/coolszy/article/details/6561841

  • 相关阅读:
    记一次centos7.2下用crontab执行定时任务的过程(初级)
    海外手机号码正则匹配
    装了wamp之后,80端口被占用解决办法
    newtonsoft动态修改JObject
    .net正则提取手机号码,并替换带有手机号码的a标签
    .vs目录有什么用?
    centos7安装nginx-1.13.6 新手入门,图文解析
    centos7安装kafka_2.11-1.0.0 新手入门
    centos7安装apache 新手入门 图文教程
    面向对象——案例练习(4)判断点是否在圆的内部
  • 原文地址:https://www.cnblogs.com/xiaoxiaoboke/p/2116235.html
Copyright © 2020-2023  润新知