C# 部署到azure时Google身份验证不起作用

C# 部署到azure时Google身份验证不起作用,c#,azure,google-authentication,C#,Azure,Google Authentication,我正在使用谷歌进行身份验证。以下代码在本地运行时运行良好,而在我将其部署到azure时抛出错误: HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://accounts.google.com/o/oauth2/token"); webRequest.Method = "POST"; Parameters = "code=" +

我正在使用谷歌进行身份验证。以下代码在本地运行时运行良好,而在我将其部署到azure时抛出错误:

 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_secret + "&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();
                    postStream.Write(byteArray, 0, byteArray.Length);
                    postStream.Close();
                    WebResponse response = webRequest.GetResponse();//**Error Occurs here**
我也试过了

var values = new NameValueCollection();
var resp = client.UploadValues("https://accounts.google.com/o/oauth2/token?" + Parameters, values );
var responseString = Encoding.Default.GetString(resp);
serStatus = JsonConvert.DeserializeObject<GooglePlusAccessToken>(responseString);
我得到下面的错误消息和堆栈跟踪

[WebException:远程服务器返回错误:(400)错误 请求。]System.Net.HttpWebRequest.GetResponse()+1399
中的SomeSln.Controllers.HomeController.User() C:\CodePath\Controllers\HomeController.cs:63 lambda\u方法(闭包) ,ControllerBase,Object[])+62
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase 控制器,对象[]参数)+14
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary2参数)+169
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor ActionDescriptor,IDictionary`2 参数)+27
System.Web.Mvc.Async.AsyncControllerActionInvoker.b_u39(IAsyncResult asyncResult,ActionInvoking innerInvokeState)+22
System.Web.Mvc.Async.WrappedAsyncResult2.CallEndDelegate(IAsyncResult 异步结果)+29
System.Web.Mvc.Async.WrappedAsyncResultBase1.End()+49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult 异步结果)+32
System.Web.Mvc.Async.AsyncInvocationWithFilters.b__3d() +50 System.Web.Mvc.Async.c__DisplayClass46.b__3f() +228 System.Web.Mvc.Async.c__显示类33.b__32(IAsyncResult asyncResult)+10
System.Web.Mvc.Async.WrappedAsyncResult1.CallEndDelegate(IAsyncResult 异步结果)+10
System.Web.Mvc.Async.WrappedAsyncResultBase1.End()+49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult 结果)+34


这可能与重定向URL不在Google侧的已批准列表中有关,而在本地运行时使用的
localhost

有关更多信息,请参阅


希望有帮助

你能包括完整的异常堆栈吗pleasesure,我现在已经添加了它。你有没有可能不发布图像而发布原始字符串值?这让阅读变得很痛苦,我认为这是最好的选择。谢谢,请检查从远程服务器返回的400是否包含消息/body@JohnBJohnI添加了重定向URL,并在登录后将其重定向。但是在AzureI中获取令牌部分似乎不起作用。我建议您尝试按照我发布的链接中的
授权代码流
示例(从您的代码中可以看出,您使用的是授权代码流),看看有什么不同。
https://sample.com/Home/User?code=4/uQB37PKUFlID8dSLFFTsYLEDdHWWOprWaMtpa6YasdxxxxxxxxxxH8OQVxg3UZMoDc&scope=email%20profile%20https://www.googleapis.com/auth/userinfo.profile%20https://www.googleapis.com/auth/userinfo.email