关于QQ互联2.0 简单登录

登录
            string loginUrl = "https://graph.qq.com/oauth2.0/authorize";
            string responseType = "code";
            string clientId = "00000000";
            string callbackUrl = "callbackUrl";

            string url = string.Format("{0}?response_type={1}&client_id={2}&redirect_uri={3}", loginUrl, responseType,
                                       clientId, callbackUrl);
            Response.Redirect(url, false);

 

callback.aspx
//已登录成功,获取用户信息
                #region 获取token
                string getAccessTokenUrl = "https://graph.qq.com/oauth2.0/token";
                const string grant_type = "authorization_code";
                const string client_id = "200000";
                const string client_secret = "00000";
                string code = Request.QueryString["code"];
                string state = Request.QueryString["state"];
                const string redirect_uri = "CallBack.aspx";
                string tokenUrl =
                    string.Format(
                        "{0}?grant_type={1}&client_id={2}&client_secret={3}&code={4}&state={5}&redirect_uri={6}",
                        getAccessTokenUrl, grant_type, client_id, client_secret, code, state, redirect_uri);
                string tokenResult = PostToUrl.PostDataToUrl(string.Empty, tokenUrl, "GET").ToString();

                //开始解析
                string[] tokens = tokenResult.Split(new char[] { '&', '=' });
                string accessToken = string.Empty;

                for (int i = 0; i < 2; i++)
                {
                    if (tokens[i * 2] == "access_token")
                    {
                        accessToken = tokens[2 * i + 1];
                        break;
                    }
                }
                if (string.IsNullOrEmpty(accessToken))
                    Response.Write("access_token is null");
                #endregion

                #region 获取openId
                string openIdUrl = "https://graph.qq.com/oauth2.0/me";
                string openIdurl = string.Format("{0}?access_token={1}", openIdUrl, accessToken);
                string result = PostToUrl.PostDataToUrl(string.Empty, openIdurl, "GET").ToString();
                //获得的数据样式 callback( {"client_id":"0000","openid":"xxxxxx"} )
                result = result.Split(new char[] { '(', ')' })[1];

                Dictionary<string, string> resultDic = Json.Parse<Dictionary<string, string>>(result);
                string openId = resultDic["openid"];
                #endregion

                #region 获取用户信息
                string userInfoUrl = "https://graph.qq.com/user/get_user_info";
                string wholeUrl = string.Format("{0}?access_token={1}&oauth_consumer_key={2}&openid={3}",
                    userInfoUrl, accessToken, client_id, openId);

                string userInfoResult = PostToUrl.PostDataToUrl(string.Empty, wholeUrl, "GET").ToString();

                Dictionary<string, string> userInfoDic = Json.Parse<Dictionary<string, string>>(userInfoResult);
                string nickname = userInfoDic["nickname"];//成功取得用户信息
                
                #endregion

                //do your login

大概就是这样,比较初级的登录,很简单。

posted @ 2012-04-24 12:08  王二麻子  阅读(457)  评论(1编辑  收藏  举报