日期:2014-05-20 浏览次数:21272 次
private const string _apiKey = "";//申请的App Key
private const string _apiKeySecret = "";//申请的App Secret
private const string _authorize = "https://api.weibo.com/oauth2/authorize";
private const string _accessToken = "https://api.weibo.com/oauth2/access_token";
private const string _userShow = "https://api.weibo.com/2/users/show.json";
private const string _uploadTextUrl = "https://api.weibo.com/2/statuses/upload_url_text.json";
private const string _update = "https://api.weibo.com/2/statuses/update.json";
public string AuthorizeRequest(string client)
{
Uri uri = new Uri(_authorize);
StringBuilder sb = new StringBuilder(uri.ToString());
sb.AppendFormat("?client_id={0}", _apiKey);
sb.AppendFormat("&redirect_uri={0}", "http://member.1schina.com/other/sinaauth.aspx");
sb.AppendFormat("&response_type={0}", "code");
sb.AppendFormat("&forcelogin={0}", "true");
if(string.IsNullOrEmpty(client))
sb.AppendFormat("&display={0}", "wap2.0");
string url = sb.ToString();
return url;
}
public ApiAccessToken GetAccessToken(string code, string requestToken, string requestTokenSecrect, string verify)
{
Dictionary<string, string> prame = new Dictionary<string, string>();
prame.Add("client_id", _apiKey);
prame.Add("client_secret", _apiKeySecret);
prame.Add("grant_type", "authorization_code");
prame.Add("code", code);
prame.Add("redirect_uri", "http://member.1schina.com/other/sinaauth.aspx");
string resultString = HttpRequestCommand.RequestResult(_accessToken, HttpRequestCommand.GetRequestString(prame), "POST");
//ErrorLog.Info("sinaJson:" + resultString);
HttpRequestCommand.JsonString = resultString;
ApiAccessToken result = new ApiAccessToken();
JObject JsonType = JObject.Parse(resultString);
if (!string.IsNullOrEmpty(((string)JsonType["access_token"])))
{
result = InstantiatedApiAccessToken(JsonType);
}
return result;
}
private static ApiAccessToken InstantiatedApiAccessToken(JObject JsonType)
{
ApiAccessToken result = new ApiAccessToken();
result.AccessToken = (string)JsonType["access_token"];
result.ExpiresIn = ((int)JsonType["expires_in"]).ToString();
result.AccountId = (string)JsonType["uid"];
return result;
}
public ApiUserInfo GetUserBase(ApiAccessToken accessToken)
{
Dictionary<string, string> prame = new Dictionary<string, string>();
prame.Add("access_token",accessToken.AccessToken);
prame.Add("uid",accessToken.AccountId);
string resultString = HttpRequestCommand.RequestResult(_userShow, HttpRequestCommand.GetRequestString(prame), "GET");
JObject JsonType = JObject.Parse(resultString);
ApiUserInfo result = new ApiUserInfo();
if (!string.IsNullOrEmpty(((string)JsonType["screen_name"])))
{
result.AccountName = (string)JsonType["screen_name"];
result.AccountId = ((decimal)JsonType["id"]).ToString();
result.AccountPicUrl = (string)JsonType["profile_image_url"];
result.IsEmpty = false;
}
else
ErrorLog.Info(resultString);
return result;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (!string.IsNullOrEmpty(Request.QueryString["code"]))
{
Session["SinaCode"] = Request.QueryString["code"];
GetAccessToken();
}
else
{
GetRequestToken();
}
}
}
private void GetAccessToken()
{
try
{
ApiAccessToken token = business.GetAccessToken(Session["SinaCode"].ToString(), "", "", "");
ApiUserInfo user = business.GetUserBase(token) as ApiUserInfo;
if(user.IsEmpty)
{
HttpUtility.Help.ErrRedirectToBackUrl();
return;
}
MemberBusiness memberBusiness = new MemberBusiness();
if (Request.Cookies["userstate"] == null)
{
HttpUtility.AccountLogin(token, user,"Sina");
}
HttpUtility.RedirectToBackUrl();
}
catch (WebException we)
{
Response.Write(new StreamReader(we.Response.GetResponseStream()).ReadToEnd());
}
}
private void GetRequestToken()
{
string url = "";
if(Session["client"]!=null)
url = business.AuthorizeRequest(Session["client"].ToString());
else
url = business.AuthorizeRequest("");
Response.Redirect(url,false);
}