0
Oauth2を使用して自分のサイトにGoogleplusログインを実装しようとしています。 ユーザが正常に認証されると使用される状態パラメータを渡したいと思います。 エラーはです。「OAuth 2パラメータは1つの値しか持てません:コード」。 私は、状態パラメータを使用しない場合、正常に動作し、ユーザーを認証します。私は間違って何をしていることができGoogleplus認証:OAuth 2パラメータには1つの値しか指定できません。コード
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);
}
:以下 は私のコードですか?