0
Oauth2를 사용하여 내 사이트에 Googleplus 로그인을 구현하려고합니다. 일단 사용자가 성공적으로 인증되면 사용되는 상태 매개 변수를 전달하고 싶습니다. 내가 받고있는 오류는 입니다. "OAuth 2 매개 변수는 하나의 값만 가질 수 있습니다 : 코드". state 매개 변수를 사용하지 않으면 제대로 작동하고 사용자를 인증합니다. 내가 무슨 일을하고있을 수Googleplus 인증 : OAuth 2 매개 변수는 단일 값만 가질 수 있습니다. 코드
protected void Page_Load(object sender, EventArgs e)
{
string returnPath = Request.QueryString["ReturnUrl"];
if (returnPath == null)
{
returnPath = "ManageAccount.aspx";
}
else
{
returnPath = Request.QueryString["ReturnUrl"].ToString();
}
Session["state"] = returnPath;
if (Session["Provider"] != null)
{
if (Session["Provider"].ToString() == "Google")
{
try
{
var url = Request.Url.Query;
if (url != "")
{
string queryString = url.ToString();
char[] delimiterChars = { '=' };
string[] words = queryString.Split(delimiterChars);
string code = words[1];
if (code != null)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://accounts.google.com/o/oauth2/token");
webRequest.Method = "POST";
Parameters = "code=" + code + "&client_id=" + googleplus_client_id + "&client_secret=" + googleplus_client_sceret + "&redirect_uri=" + googleplus_redirect_url + "&grant_type=authorization_code";
byte[] byteArray = Encoding.UTF8.GetBytes(Parameters);
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = byteArray.Length;
Stream postStream = webRequest.GetRequestStream();
// Add the post data to the web request
postStream.Write(byteArray, 0, byteArray.Length);
postStream.Close();
WebResponse response = webRequest.GetResponse();
postStream = response.GetResponseStream();
StreamReader reader = new StreamReader(postStream);
string responseFromServer = reader.ReadToEnd();
GooglePlusAccessToken serStatus = JsonConvert.DeserializeObject<GooglePlusAccessToken>(responseFromServer);
if (serStatus != null)
{
accessToken = serStatus.access_token;
if (!string.IsNullOrEmpty(accessToken))
{
getgoogleplususerdataSer(accessToken);
}
}
}
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string error = reader.ReadToEnd();
lblMessage.Text = error;
}
}
}
}
}
}
}
protected void btnGoogleLogin_Click(object sender, System.EventArgs e)
{
var Googleurl = "https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=" + googleplus_redirect_url + "&scope=https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/userinfo.profile&client_id=" + googleplus_client_id + "&state=" + Session["state"];
Session["Provider"] = "Google";
Response.Redirect(Googleurl);
}
: 아래 내 코드?