调试腾讯微博开发平台鉴权和API的一点体会

来源:互联网 发布:淘宝海外代购 编辑:程序博客网 时间:2024/05/19 03:18

        由于开发的应用需要发微博(OAuth1.0),近来几日都在调试腾讯微博的这个接口,到此时此刻个人觉得最快的办法就是:

                首先看明白官方的说明,

                然后下个sdk(本人使用的java)包参考一下他们的example,

                最后按照示例的流程,调用sdk中的方法一步步走完,搞定

         (本人在sdk中发现个小小的错误,下面会做说明)

         本人比较苦逼,之前并不知道有sdk这个好东西可以下载,所以在看了一通说明文档后就开始噼里啪啦的敲了一通代码,感觉还是挺顺利的,但是在调试的时候问题就来了,签名总是无法通过【Invalid signature】,最后历经千辛万苦,总算得以通过但是偶尔还是会出现这个错误,虽然频率不是很高,但是终究是有问题。最后得高人指点发现有sdk这样的神器,无奈之时下载下来后最终完全解决掉了。

         以下几处时需要注意的地方:

         1,获取未授权的request token时,签名密钥【密钥为:App Secret&Access Token Secret】此时只有App Secret而没有Access Token Secret,所以此时的密钥的组成应该为:【App Secret&】。

          2,生成的签名的baseString必须排序

          3,发含中文的微博时:中文需要 URLEncoder.encode两次,即URLEncoder.encode(baseString, "UTF-8”)一次,生成baseString时URLEncoder.encode("内容", "UTF-8”)  一次。

          4,微博内容中含有空格时,空格被URLEncoder后会变为 20%  此时需要把 20% 变为 + (sdk中是这样处理的)

/**     * 对参数进行UTF-8编码,并替换特殊字符     *      * @param paramDecString 待编码的参数字符串     * @return 完成编码转换的字符串     */    public static String paramEncode(String paramDecString) {        if (!hasValue(paramDecString)) {            return "";        }        try {            return URLEncoder.encode(paramDecString, "UTF-8").replace("+", "%20")                    .replace("*", "%2A").replace("%7E", "~")                    .replace("#", "%23");        } catch (UnsupportedEncodingException e) {            throw new RuntimeException(e.getMessage(), e);        }    }

以上是sdk中的处理源码

        5,通过【获取自己的详细资料  user/info】接口获取微博头像地址时,需要在得到的url后面加上需要的尺寸才能访问,如:http://app.qlogo.cn/mbloghead/d387538f629cfb53c2b0  需要加上 /180  即:http://app.qlogo.cn/mbloghead/d387538f629cfb53c2b0/180 (尺寸有多种:10/.../100/180)


以上就是本人在开发过程中遇到的问题,仅供参考!

 

在授权的回调处理的时候,带有一个参数 oauth_verifier  而sdk的方法(OAuthV1Client.parseAuthorization())中进行判断的名字是 vcode在运行时由于这个错误会通不过

         

原创粉丝点击