//2.获取Token #region 请求参数 /* * HTTP请求方式:POST * 请求参数 * 参数 必选 类型及范围 说明 * client_id true string 申请应用时分配的AppKey。 * client_secret true string 申请应用时分配的AppSecret。 * grant_type true string 请求的类型,填写authorization_code * * grant_type为authorization_code时 * 参数 必选 类型及范围 说明 * code true string 调用authorize获得的code值。 * redirect_uri true string 回调地址,需需与注册应用里的回调地址一致。 * 返回值字段 * 参数 字段类型 字段说明 * access_token string 用于调用access_token,接口获取授权后的access token。 * expires_in string access_token的生命周期,单位是秒数。 * remind_in string access_token的生命周期(该参数即将废弃,开发者请使用expires_in)。 * uid string 当前授权用户的UID。 */ #endregion #region 获取Token /// <summary> /// 获取Token /// </summary> /// <param name="code"></param> /// <returns></returns> public Dictionary <string, object> Token(string code) { try { Dictionary <string, object> result = Conf.PostDictionary(TokenUrl, Conf.Sina_Client_ID, Conf.Sina_Client_Secret, Conf.Sina_Callback_URL, code); if (result != null && result.Count > 0) { this.Access_Token = result["access_token"].ToString(); this.Expires_In = long.Parse(result["expires_in"].ToString()); this.Token_Type = result["token_type"].ToString(); this.Refresh_Token = result["refresh_token"].ToString(); } return(result); } catch (Exception ex) { return(null); } }
//2.获取Token #region 获取Token /// <summary> /// 获取Token /// </summary> /// <param name="code">调用authorize获得的code值</param> /// <param name="state">成功授权后回调时会原样带回client端的状态值</param> /// <returns></returns> public string Token(string code, string state) { try { //判断client端的状态值,用于第三方应用防止CSRF攻击 //if (State != state) //{ // return null; //} Dictionary <string, object> result = Conf.PostDictionary(TokenUrl, Conf.Sina_Client_ID, Conf.Sina_Client_Secret, Conf.Sina_Callback_URL, code); if (result != null && result.Count > 0) { this.Access_Token = result["access_token"].ToString(); //接口获取授权后的access token this.Expires_In = long.Parse(result["expires_in"].ToString()); //access_token的生命周期,单位是秒数 this.UID = long.Parse(result["uid"].ToString()); //当前授权用户的UID } return(this.Access_Token); } catch (Exception ex) { throw ex; } }