如题 现在流行 第三登录 新手求教 说一个步骤 资料 源码案例 都可以
用qq 或者新浪登录 就像现在CSDN 也可以啦~~
------解决方案--------------------
自己写的sina 的
- C# code
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); }