主流(大概)开放平台站内应用开发总(tu)结(cao)

最近在帮人做一个应用,需要在“各大”开放平台站内应用中上线,本来以为吧,之前做过各个开放平台的帐号oauth同步登录之类的,和简单的接口发布什么,也都做得很顺,算是对开放平台还算比较熟悉,做起站内应用(非游戏)才发生,各种坑。而且这次做的应用有个更为坑爹的要求是不能用PHP,得要用C#,当然,作为站内应用,还必须配合JS SDK。于是万里长征快到头,便想好好总结(tucao)一下。

虽说总结的东西其实都是有时效性的,但还是拿来分享一下~

涉及到的开放平台有下面几个,虽然不全,但算是目前比较主要的几个:
腾讯系:腾讯微博、QQ空间、朋友网
新浪微博
人人网 继续阅读主流(大概)开放平台站内应用开发总(tu)结(cao)

新浪微博mid的base62算法的C#实现

好吧,这几天给人写微博应用,于是彻底给新浪微博跪了,关于微博信息的返回值,又是id,又是mid,然后还有一个base62的mid

然后在开放平台的文档上,ID和MID的类型都是int64,而且两个的值是不一样的,但是在实际测试过程中,新发出去微博返回的ID和MID是一样的,虽说猜测觉得目前ID和MID只是为了向下兼容比较老的数据才留出来的,现在都一样,但由于新浪还是留了queryid和querymid进行互转处理的接口,所以还是不敢随便去认为ID和MID一样。

既然id和mid都是int64的数字,那么这个base62的mid是什么呢,从我知道的来看,目前新浪微博的每个微博都有一个独立页面类似

http://www.weibo.com/*****/ywnwezFce

而这个后面的ywnwezFce就是base62的mid,查阅资料这是一个短网址变换,变换的方法则是base62,如果需要对MID进行变换的话可以使用微博API的querymid,但是新浪对于API的请求有次数限制,虽然说这个API支持批量转换,但还是自己来实现这个转化比较好,网上关于base62的代码很多了,但新浪微博的短网址又不只是简单的对id的int64进行base62,而是进行拆分之后分别base62后再连接,于是就用C#实现了一下

public String bst = “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”;
public String base62(String mid)
{
long int_mid = Int64.Parse(mid);
String result = “”;
do
{
long a = int_mid % 62;
result = bst[(int)a] + result;
int_mid = (int_mid – a) / 62;
} while (int_mid > 0);
return result.PadLeft(4,’0′);
}

public String getSinamid(String mid)
{
long int_mid = Int64.Parse(mid);
String result = “”;
for (int i = mid.Length – 7; i > -7; i -= 7)
{
int offset1 = (i < 0) ? 0 : i; int offset2 = i + 7; String num = base62(mid.Substring(offset1, offset2 - offset1)); result = num + result; } return result; } [/code]