博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开放平台那些事
阅读量:5321 次
发布时间:2019-06-14

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

      开放平台的东西,目前很多人在搞,也不多说,本人之前做过,这里就新浪开放平台做个基本的总结,让那些刚弄的能快速点进入开发,如有不正确的还请诸位指出,免得误导人。

      目前基本上要求使用的是author2.0进行开发,开发指南在这里 ,api文档 ,错误码信息

      本人之前做的是一个网站接入,这里说的是网站接入,其他的情况或许有所不同,具体的还得开发者自己看文档。

      开放平台具体开发有以下几步。

      1、申请appkey、填写回调地址等信息(由于有段时间没弄了,具体的还得自己看文档)

      2、引导用户至授权页面

///         /// 引导用户至授权页面,请求参数见 http://open.weibo.com/wiki/Oauth2/authorize        ///         public const string AUTHORIZE_URL = "https://api.weibo.com/oauth2/authorize";        public void RedirectToSinaLogin ( HttpContext context )        {            string requestUrl = String.Format(AUTHORIZE_URL + "?client_id={0}&redirect_uri={1}&response_type=code", AppKey, RedirectUri);            context.Response.Redirect(requestUrl);        }

      3、用户授权后,会进入回调页面,同时返回一个code值

      4、有了这个code值,以及第一步中获得的AppKey、AppSecret和回调地址,我们就可以用这些获取access_token和uid了

///         /// 授权后获取access_token,请求参数见 http://open.weibo.com/wiki/OAuth2/access_token        ///         public const string ACCESSTOKEN_URL = "https://api.weibo.com/oauth2/access_token";        public void GetAccessToken ( )        {            string requestUrl = String.Format(ACCESSTOKEN_URL + "?client_id={0}&client_secret={1}&grant_type=authorization_code&redirect_uri={2}&code={3}", AppKey, AppSecret, RedirectUri, Code);            string response = RequestUrl(requestUrl,"POST");            var dic = response.GetValues( );            this.AccessToken = (string)dic["access_token"];            this.Uid = (string)dic["uid"];            this.ExpiresIn = dic["expires_in"].ToString();        }

         注意上文中的两个函数,一个是发送http请求,一个是扩展函数,用来解析json(需要说明的是,有时候返回的不一定是json,需要开发者自己去想办法提取信息)

public string RequestUrl ( string url, string postMehtod )        {            string result = String.Empty;            try            {                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);                request.Method = postMehtod;                request.ContentType = "application/x-www-form-urlencoded";                HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse( );                StreamReader responseReader = new StreamReader(webResponse.GetResponseStream( ));                result = responseReader.ReadToEnd( );                responseReader.Close( );                webResponse.Close( );            }            catch            {                throw;            }            return result;        }
internal static class Extension    {        ///         /// 解析JSON格式字符串(无嵌套的类型,如{"Name":"Sam","Age":20})        ///         /// 
public static Dictionary
GetValues ( this String jsonString ) { try { JavaScriptSerializer ser = new JavaScriptSerializer( ); return (Dictionary
)ser.DeserializeObject(jsonString); } catch { throw; } return null; }}

        5、注意第四步中获取的ExpiresIn是access_token的有效时间,我们获取到access_token和ExpiresIn时,需要将access_token和ExpiresIn(或是利用这个值计算出access_token的过期日期)保存起来(一般存数据库,不过访问慢点),这样只要access_token存在(如果保存在cookie中的话就容易丢失)而且没过期,就不用每次都引导用户授权了(当然登录是必须的,有的开发者注意别把这两者混为一团),至于具体怎么处理这两个值就需开发者自己衡量了

       6、现在我们可以使用access_token和uid来访问用户的信息或是做些其他操作,详细的需要开发者查看新浪api文档(注意本人开发时此文档还在不断变化中,所以返回的一些数据可能会发生变化),下面贴一个本人获取的用户信息的一个函数,注意此函数旨在说明用法,读者不必细究,需要自己去封装

///         /// 获取用户的基本信息,参数uid为可选参数,不选时就获取到当前登录用户        ///         /// 用户的UID(可选参数,为0或不选函数将返回当前登录用户)        /// 
public SinaUser GetUser( Int64 uid = 0 ) { if (uid == 0) _sinaUser.Id = Convert.ToInt64(_oauthSina.Uid); else _sinaUser.Id = uid; if (_sinaUser.Id == 0) return _sinaUser; string request = String.Format(SHOW_URL + "?access_token={0}&uid={1}", AccessToken, _sinaUser.Id); string response = _oauthSina.RequestUrl(request, "GET"); var dic = response.GetValues(); _sinaUser.ScreenName = (string)dic["screen_name"]; _sinaUser.Name = (string)dic["name"]; _sinaUser.Province = (string)dic["province"]; _sinaUser.City = (string)dic["city"]; _sinaUser.Location = (string)dic["location"]; _sinaUser.Description = (string)dic["description"]; _sinaUser.Url = (string)dic["url"]; _sinaUser.ProfileImageUrl = (string)dic["profile_image_url"]; _sinaUser.ProfileUrl = (string)dic["profile_url"]; _sinaUser.Domain = (string)dic["domain"]; _sinaUser.Gender = (string)dic["gender"]; _sinaUser.FollowersCount = (int)dic["followers_count"]; _sinaUser.FriendsCount = (int)dic["friends_count"]; _sinaUser.FavouritesCount = (int)dic["favourites_count"]; _sinaUser.CreatedDate = (string)dic["created_at"]; _sinaUser.Following = (bool)dic["following"]; _sinaUser.Verified = (bool)dic["verified"]; _sinaUser.OnlineStatus = (int)dic["online_status"]; _sinaUser.StatusesCount = (int)dic["statuses_count"]; return _sinaUser; }

      OK,至此,你可以利用这些尝试去开发了。能够登录、获取用户信息,部署好了就可以让新浪审核了。腾讯的开放平台一大堆,读者要弄的话,自己慢慢去看了,不过大体步骤跟这差不多(多了个openid)。

      小提示下,开发者个人信息别随便填,有很多改不了(本人当初开发时,由于种种原因填了自己的邮箱,后来要离职,不过我还是给改回来了,当时新浪那个只在前台做验证,现在不知道改了没,所以修改下css就可以修改邮箱了)。

转载于:https://www.cnblogs.com/Fuss/archive/2012/11/26/2789378.html

你可能感兴趣的文章
python语言pos_英语以外的语言的POS
查看>>
python里pass_Python 中pass关键字有哪些功能?
查看>>
python tkinter text设置背景色_Python Tkinter文本背景
查看>>
python3 class_Python3里的super()和__class__使用介绍
查看>>
phpjavascript弹窗不刷新_Excel VBA工作薄 6.5到时会自动消失的提示窗口 不影响程序执行...
查看>>
mysql bin log raid 1_mysql binlog
查看>>
node mysql 主从分离_Node.js Sequelize如何实现数据库的读写分离
查看>>
python elasticsearch delete_如何从Elasticsearch中删除文档
查看>>
pythonunittest集成_python自动化框架----unittest详解
查看>>
java中volatile关键字_Java面试官最爱问的volatile关键字
查看>>
魂斗罗归来大觉机器人_魂斗罗归来Boss模式详解 Boss血量分析
查看>>
java代码抛出异常_Java中编写代码出现异常,如何抛出异常,如何捕获异常
查看>>
macbook搭建java环境_在mac上搭建了Java 环境,谨以此文写给自己
查看>>
java 序列化协议_JAVA RPC(二)序列化协议杂谈
查看>>
java flexpaper_解决flexpaper读取本地文件问题,JAVA+TOMCAT
查看>>
java license框架_LICENSE · wanggn/Java微信开发框架封装版 - Gitee.com
查看>>
java格式化输出文件_浅谈Java中格式化输出
查看>>
java动画 线程 优缺点_Java创建线程三种方式的优缺点
查看>>
null object java_java1.8--Null Object模式
查看>>
java多维数组给一维数组_java一维数组和多维数组的使用
查看>>