Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP MVC OWIN标识-如何检索Google OAuth 2.0“;代码“;从页眉_C#_Asp.net_Asp.net Mvc_Google Oauth_Google People - Fatal编程技术网

C# ASP MVC OWIN标识-如何检索Google OAuth 2.0“;代码“;从页眉

C# ASP MVC OWIN标识-如何检索Google OAuth 2.0“;代码“;从页眉,c#,asp.net,asp.net-mvc,google-oauth,google-people,C#,Asp.net,Asp.net Mvc,Google Oauth,Google People,Q:如何从ASP.Net MVC帐户控制器的HTTP头中检索Google OAuth身份验证返回的“代码”? 这是检索用户谷歌个人资料照片的正确方法吗? 我正在尝试访问Google People API以检索经过身份验证的用户的封面照片。我正在使用ASP.NETMVC5,其Owin标识为“帐户控制器”。我可以通过Google验证OK,并在我的ASP.net用户表(LocalDB)中注册一个新用户 但是为了在ExternalLogin确认期间检索用户的封面照片,我正在尝试(但失败)检索返回回回调的

Q:如何从ASP.Net MVC帐户控制器的HTTP头中检索Google OAuth身份验证返回的“代码”? 这是检索用户谷歌个人资料照片的正确方法吗?

我正在尝试访问Google People API以检索经过身份验证的用户的封面照片。我正在使用ASP.NETMVC5,其Owin标识为“帐户控制器”。我可以通过Google验证OK,并在我的ASP.net用户表(LocalDB)中注册一个新用户

但是为了在ExternalLogin确认期间检索用户的封面照片,我正在尝试(但失败)检索返回回回调的“代码”查询字符串-请参阅下面的Chrome开发工具快照

我假设它可以在AccountController的HttpContext中的QueryString属性中找到,但在ExternalLoginCallback和ExternalLoginConconfirmation操作的断点中调试以下控制器属性时,我找不到“code”键或值:

var httpContext = HttpContext;
var modelState = ModelState;
var request = Request;
var response = Response;
var routeData = RouteData;
var session = Session;
var owinContext = HttpContext.GetOwinContext();
我仍然在摸索流程是如何运作的——所以我可能从错误的角度来看待这一点,所以我愿意接受建议。我希望在对Google People API的调用中直接使用此代码(作为查询字符串中的“key=”)。或者,我将代码发送到Google认证API以获取访问令牌,然后可以如上所述使用该令牌。或者我可能完全是个误会

我打算为用户的封面照片点击Google People API的URI如下所示:

string uri = $@"https://people.googleapis.com/v1/people/{UserId}?personFields=coverPhotos&fields=coverPhotos&key={token}";

(其中token是用户通过Google验证时返回的代码,或者是使用初始验证代码的附加呼叫的后续访问令牌)。

您创建了什么类型的Google凭据?您是否考虑过使用Google.net客户端库为您处理所有这些问题?BTW代码是您需要交换访问令牌的授权代码。它不是可用于使用&access\u token=调用api的访问令牌,谢谢您的评论。我已经为web应用程序创建了ClientId和ClientSecret。明白了:身份验证代码。是的,我倾向于只遵循GoogleAPI,但我已经在重定向_不匹配错误(IIS使用随机端口)的问题上绕了一圈。你有这方面的经验吗?我应该使用服务帐户密钥而不是web应用程序密钥吗?@DalmTo刚刚找到了你对这篇文章的答案,我没有使用本地IIS,所以我现在将尝试设置:)你需要设置visual studio,这样它就不会使用重定向URI需要匹配的随机端口