2011年,开放元年,各大平台竞相开放,开发者们乐此不彼。但是作为进入开发平台的第一步,授权,却把很多开发者搞得晕头转向。个人学习开放平台从新浪微博入手,因频频不能得手,中途转战腾讯微博,遇到问题就在技术讨论群里发问,奈何大都是新手,且开发语言不一,能帮忙者甚少。功夫不负有心人,就在那仅有的几个的帮助下,加上自己的努力,终于打通了各个环节,成功发布了第一条微博,并且完成了一个简单应用,参与光棍节主题大赛。

现在个人想把应用移植到新浪微博、网易微博等其他开发平台,于是开始又回到新浪。虽然都是Oauth(此处Oauth表示Oauth1.0,下文及该系列后续文章所述Oauth亦均表示Oauth1.0)授权,但细节上却依然有很多不同。新浪Oauth授权http请求方式为post,个人成功获取了reqeust_token,在以同样的方法获取access_token却未能成功;网易微博开放平台文档提示其Oauth授权http请求方式为get,但个人在实际调试中,却发现用post和get均可获取request_token,但是同样以获取request_token的方法去获取access_token却都不行,至今没弄懂起起其中,所以在此分享腾讯的代码,也是希望其他朋友能够提供新浪和网易等其他平台授权代码,以供大家相互学习。

在腾讯微博开放平台,遇到大小问题如下:

1、urlencode:由于对http并不是熟悉,所以一开始并不知道urlencode是什么,后来稍微看懂了一点,就想自己写函数,却不知系统都有现成的函数,晕死。

解:UrlEncode,即将字符串以URL编码。Android中实际采用java.net.URLEncoder类,使用方法如 URLEncoder.encode(<A href="http://www.csdn.net,"UTF-8">http://www.csdn.net,"UTF-8")。

2、baseString:这一点,新浪、网易、腾讯给出的文档还是可以帮助开发者理解的,本身实现也不难,主要即使参数排序和encode处理。但是有时候,开发者们都对此简单的东西不太感兴趣,有时候都懒得去敲键盘,总想找开源代码。个人有点执着就是自己懂的东西都不去用别人的,就硬着头皮写下了。

3、oauth_nonce:应该说一开始也是自己知识的限制,都不知道oauth_nonce的作用,而且还针对其长度新浪和腾讯不一发问,呵呵。其实,oauth_nonce就是一个随机字符串,用于防止重复攻击,长度没有明确的规定,常取32位。

4、signature:签名还是第一次接触,只能看别人的代码了,不过看了也看不出所以然来,就那几句,直接copy了。

5、base64encode:和签名相关的,也没时间去弄,此处均参考网上公开代码。

6、以上基本的东西都准备好了,就开始联网了。使用httpurlconnecton还是httpclient,就看个人习惯了。腾讯给出的sdk采用httpclient,但是版本与andorid本身的httpclient版本不一致,所以需要导入httpclient包,本人嫌包太大(本来主程序代码总共就那么几十K,还要导入个上百K的外部包,感觉就不爽),就没有用。自己搞弄了一些时间,弄出了现在的代码。

7、中文乱码:中途测试可以发送英文字母,中文却乱码。后经高人指点,是因为我的项目是GBK而不是UTF-8,且代码编码有点乱。这只能是我自己的错了。

8、手机联网:WIFI可以直接连接互联网,手机的(E)GPRS必须经过代理。

项目源代码:http://download.csdn.net/detail/mrlixirong/3804385

BaseString类代码

import java.net.URLEncoder;
import java.util.ArrayList;
/**
*
* @author mrlixirong
*
* 2011-11-16
*/
public class BaseString {
String url;//请求网址
String httpMethod;//请求方式
ArrayList<String> paramNameList;//参数名列表
ArrayList<String> paramValueList;//参数值列表
int[] order;//参数名排序
public BaseString(){
paramNameList=new ArrayList<String>();
paramValueList=new ArrayList<String>();
url=null;
httpMethod=null;
}
//设置请求网址
public void setURL(String url){
this.url=url;
}
//设置请求方式
public void setHttpMethod(String httpMethod){
this.httpMethod=httpMethod;
}
//添加参数
public void addParams(String name,String value){
paramNameList.add(name);
paramValueList.add(value);
}
//获取baseString
public String getBaseString(){
StringBuffer sb=new StringBuffer();
try {
sb.append(httpMethod);
sb.append("&");
sb.append(URLEncoder.encode(url, "UTF-8"));
sb.append("&");
order();
int size=paramNameList.size();
for(int i=0;i<size;i++){
sb.append(paramNameList.get(order[i]));
sb.append("%3D");
sb.append(URLEncoder.encode(paramValueList.get(order[i]),"UTF-8"));
if(i<size-1){
sb.append("%26");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
//根据参数名排序
void order(){
int size=paramNameList.size();
order=new int[size];
String name1;
String name2;
for(int i=0;i<size;i++){
name1=paramNameList.get(i);
int k=0;
for(int j=0;j<size;j++){
name2=paramNameList.get(j);
if(name1.compareTo(name2)>0){
k++;
}
}
order[k]=i;
}
}
}

Android腾讯微博开放平台入门(一)开题与BaseString相关推荐

  1. 腾讯微博开放平台 android登录界面显示为pc登录界面 解决方案

    腾讯微博开放平台的登录授权一直没有官方的sdk,下载的sdk开始正常使用无问题,但是某天,我们用htc g10  android2.3(有刷过机)使用腾讯微博账号登录,发现登录界面显示为pc上的授权页 ...

  2. 腾讯微博开放平台授权教程(1)

    看到坛子里众多开发者问了很多授权问题,官方又没有及时解答,主要是他的API文档有些细节不够明确,经过几天的摸索,我将摸索到的经验以图文及代码的形式写出来,希望能抛砖引玉. 一.前言 腾讯微博开放平台授 ...

  3. 微博开放平台应用申请(Android签名填写规则)

    2019独角兽企业重金招聘Python工程师标准>>> 在微博开放平台新建应用,需要填写基本信息Android签名信息一栏中,很多人不知道这里填写什么 需要填写:android签名信 ...

  4. 关于微博开放平台Oauth2.0接入网站应用

    关于什么是微博开放平台及微博开放平台能做什么,咱就不做搜索引擎的搬运工了 这里直接给个链接介绍:微博开放平台 本文只是抛砖引玉,讲讲微博开放平台的基本用法,适合没接触过开放平台的朋友入门学习,老鸟就略 ...

  5. 新浪与腾讯的开放平台对比

    做了金庸问答分别在腾讯和新浪的开放平台上线,了解了一些WEB开发的皮毛,对腾讯和新浪两个开放平台也有了一些认识,下面就我能力范围内对两个平台进行一番比对. 首先说云服务的平台,注意,说的不是开放平台. ...

  6. 【NLP】Pyhon+讯飞开放平台:​手把手带你写一个智能语音播报系统

    手把手带你写一个智能语音播报系统. 微信扫码登陆讯飞开放平台:https://www.xfyun.cn/ 完成个人认证. 在控制台创建应用,注意应用名称全库查重,很容易跟别人重复. 可查看到pytho ...

  7. 腾讯Q+开放平台,相信又是一次成功的模仿

    今天看到两则新闻,中国国内两家互联网大佬都在推自己的开放平台: 腾讯CTO谈Q+开放平台:7月上线. 和 360推360°开放平台:建10亿元创新基金 .从文章的内容来看,Q+的本质就是做一个应用商店 ...

  8. 新浪与腾讯的开放平台对比(下)

    应用审核速度:腾讯完胜.在我前面写的菜鸟从零开始的第一个应用上线记中就写过了,我先提交新浪审核,然后才开始往腾讯移植,结果腾讯这边我三次审核后都上线了新浪的审核居然还没下来,工作效率差的不是一点.在新 ...

  9. 微博开放平台SDK 移动端的H5方式授权过程分析

    最近公司要做一个sdk,仿照微博开放平台.要写移动sdk,并且采用H5页面进行授权.看了几天微博SDK源码,终于理解了微博如何做到通过H5页面授权,并回调移动端的方法返回授权码,access Toke ...

  10. 新浪与腾讯的开放平台对比(上)

    做了金庸问答分别在腾讯和新浪的开放平台上线,了解了一些WEB开发的皮毛,对腾讯和新浪两个开放平台也有了一些认识,下面就我能力范围内对两个平台进行一番比对. 首先说云服务的平台,注意,说的不是开放平台. ...

最新文章

  1. 使用PHP Excel类读取和生成excel文件
  2. ora-12545连接错误解决一例
  3. 计算价格, java中浮点数精度丢失的解决方案
  4. continue语句只用于循环语句中_循环里continue,break,return的作用,你知道吗?
  5. 下载了一堆mysql_干掉一堆mysql数据库,仅需这样一个shell脚本
  6. spring mvc logback
  7. Android中通过数组资源文件xml与适配器两种方式给ListView列表视图设置数据源
  8. 操作系统之进程管理:16、管程
  9. java ireport动态报表_JasperReport学习笔记5-其它数据生成动态的报表(WEB)
  10. Atitit 圣爱提拉克斯工作最紧张的时候 11月,圣爱提拉克斯进入了一年中工作最紧张的时候。 过去,他每个月都要撰写不少文章、与不同的人愉快地交谈,教育他们沿着圣爱提拉克斯创造的世界上最伟大的圣
  11. 英语foteball足球
  12. switch 语句的使用范围
  13. Logback日志配置和简单使用
  14. vim自定义设置-配置文件
  15. 如何理解泰勒展开式,他有何用途?
  16. 20条心灵鸡汤唯美句子,句句温情暖心!
  17. 使用C语言实现LED1/LED2/LED3灯点亮
  18. 课题申报书范文_课题申报书范文.doc
  19. Android手游SDK那点事(一)简述
  20. 大数据多元化教学评价_多元化

热门文章

  1. JavaFX Scene Builder支持JxBrowser
  2. 360浏览器怎么开java_360安全浏览器怎么打开javascript
  3. ETL工具——Taskctl Web应用篇
  4. 局域网桌面共享软件(Java版)
  5. 在Linux系统编译DCMTK的源码得到其动态库文件和可执行程序
  6. 解决 Oracle 密码过期 the password has expired
  7. AD7606数据采集模块使用方法
  8. 软件评测师考试通过啦
  9. PHP7函数大全(4553个函数)
  10. django下载安装