简单做了一个sina微博的MVC第三方登陆

实现的效果是通过第三方sina登陆获取用户信息

现在我们讲述一下认证的步骤

1、第一步先获取sina认证的appkey,appSecret在地址http://open.weibo.com/wiki/中获取,在获取appkey,appSecret的时候同时还要设置RedrictURL

 
 

2、获取appkey,appSecret之后并且设置你的redirectURL现在我们就来获取code

        string code = "";
           var ur = Request.Url;
           string mur = ur.ToString();
           var oauth = new NetDimension.Weibo.OAuth("your appkey ", "your appSecret");
           oauth.CallbackUrl = "redirectURL";
           if (mur.IndexOf("code") < 0)
           {
              
             
               var url = oauth.GetAuthorizeURL();
               //    Response.Redirect(url);
               ViewBag.URL = url;

           }

code返回的形式是your redirectURL&code的形式返回的例子http://****?code=asdsxxx,code后面的就是你获取access_token所要的code

3、获取access_token

  code = mur.Substring(mur.IndexOf("code") + 5, mur.Length - mur.IndexOf("code")-5);
               WeiboParameter[] webpara = new WeiboParameter[] { new WeiboParameter("client_id","3487061422"),
                    new WeiboParameter("redirect_uri", "your redirect_url"),
                 new WeiboParameter("client_secret","appSecret"),
                 new WeiboParameter("code", code),//此code是上面获取的code
                 new WeiboParameter("grant_type", "authorization_code")};//设置为默认值就这样写不要改动
               Client mClient = new Client(oauth);
           
             AccessToken aToken = oauth.GetAccessTokenByAuthorizationCode(code);//这就是我们需要的access——token
               saveCookies("ExpiresIn", aToken.ExpiresIn.ToString());
             //   saveCookies("RefreshToken", aToken.RefreshToken.ToString());
               saveCookies("Token", aToken.Token.ToString());
               saveCookies("UID", aToken.UID.ToString());
    public class AccessToken
    {
        [JsonProperty(PropertyName = "access_token")]
        public string Token{get; set;}
        [JsonProperty(PropertyName = "expires_in")]
        public int ExpiresIn{get; set;}
        [JsonProperty(PropertyName = "uid")]
        public string UID{get; set;}
        [JsonProperty(PropertyName = "refresh_token")]
        public string RefreshToken { get;  set; }

    }

4、获取信息,下面我们先看一下获取用户信息的接口http://open.weibo.com/wiki/API%E6%96%87%E6%A1%A3_V2这是api文档,获取用户信息的接口是http://open.weibo.com/wiki/2/users/show

由截图我们可以看到这个用oauth2.0的话只需要access_token和uid即可

  
               WeiboParameter[] webpara1 = new WeiboParameter[] { new WeiboParameter("access_token", aToken.Token), new WeiboParameter("uid",aToken.UID) };
               string content = mClient.GetCommand("https://api.weibo.com/2/users/show.json", webpara1);


               var dynamicJson1 = DynamicJson.Parse(content);
               muser.id = dynamicJson1.id;
               muser.screen_name = dynamicJson1.screen_name;
               muser.name = dynamicJson1.name;
               muser.province = dynamicJson1.province;
               muser.location = dynamicJson1.location;

就这样获取用户信息的例子完成了,这个看明白的话其他的第三方认证都是采用oauth2规则,1、先获取code 2、在获取access_token 3、调用api接口就行了,

希望对大家有所帮助

 

 

转载于:https://www.cnblogs.com/win-and-first/archive/2012/10/23/sina_oauth_mvc.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值