Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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
Oauth 2.0 Google OAuth用户信息方法不';不要返回电子邮件地址_Oauth 2.0_Google Api_Google Login - Fatal编程技术网

Oauth 2.0 Google OAuth用户信息方法不';不要返回电子邮件地址

Oauth 2.0 Google OAuth用户信息方法不';不要返回电子邮件地址,oauth-2.0,google-api,google-login,Oauth 2.0,Google Api,Google Login,我正在使用GoogleAPI和Postman,我正在使用它来检索我的令牌,它可以正常工作 https://accounts.google.com/o/oauth2/token?code={my_code} 现在,使用access\u token我希望获得用户数据 因此,我将此方法称为: https://www.googleapis.com/oauth2/v3/userinfo?access_token={my_access_token} 但我的回答是 我已尝试使用userinfo.ema

我正在使用GoogleAPI和Postman,我正在使用它来检索我的令牌,它可以正常工作

https://accounts.google.com/o/oauth2/token?code={my_code}

现在,使用access\u token我希望获得用户数据 因此,我将此方法称为:

https://www.googleapis.com/oauth2/v3/userinfo?access_token={my_access_token}
但我的回答是

我已尝试使用userinfo.email,但未找到响应

有没有办法获取用户电子邮件? 谢谢


更新:还尝试将作用域设置为auth call

和用户信息通话

但没有返回电子邮件。

来自:

仅当您的范围包含电子邮件范围值时,才会提供电子邮件

为此,请为应用程序设置一个附加作用域:

https://www.googleapis.com/auth/userinfo.email
您可以转到开发人员控制台,然后通过用户同意屏幕添加范围。这里的目标是您需要随时查看
userinfo.email
以及
userinfo.profile
范围 使用邮递员检索您的访问令牌

另一种方法是,您必须再次生成另一个。授权时,系统会要求您在请求中包含一个作用域,并在其中包含您需要的两个作用域。

来自:

仅当您的范围包含电子邮件范围值时,才会提供电子邮件

为此,请为应用程序设置一个附加作用域:

https://www.googleapis.com/auth/userinfo.email
您可以转到开发人员控制台,然后通过用户同意屏幕添加范围。这里的目标是您需要随时查看
userinfo.email
以及
userinfo.profile
范围 使用邮递员检索您的访问令牌


另一种方法是,您必须再次生成另一个。授权时,系统会要求您在请求中包含一个作用域,并在其中包含您需要的两个作用域。

userinfo.endpoint没有设计或保证每次都返回声明的范围。如果您希望每次都获得用户的电子邮件地址,并且包含电子邮件范围,那么您应该通过People api

响应

除此之外,我认为您应该考虑在邮递员中使用AuthTab,然后选择OAuth2,然后您应该能够添加客户ID和那里的所有内容。这比自己交换所有代码要容易得多。

userinfo.endpoint没有设计或保证每次都返回声明的代码。如果您希望每次都获得用户的电子邮件地址,并且包含电子邮件范围,那么您应该通过People api

响应

除此之外,我认为您应该考虑在邮递员中使用AuthTab,然后选择OAuth2,然后您应该能够添加客户ID和那里的所有内容。这比自己交换所有代码要容易得多。

尝试使用此端点:

https://openidconnect.googleapis.com/v1/userinfo

您可以通过转到以下url检查所有OAuth端点:

尝试使用此端点:

https://openidconnect.googleapis.com/v1/userinfo


您可以通过转到以下url检查所有OAuth端点:

我尝试运行此命令:
curl-xgethttps://www.googleapis.com/oauth2/v3/userinfo?access_token={my_access_token}
并从中获取了我的访问令牌,它可以正常工作,因此很可能您缺少电子邮件范围。我无法理解。我必须更改第一个呼叫吗?正如您在最新图片上看到的,响应中仍然只有一个作用域,即
userinfo.profile
。当您为访问令牌交换身份验证代码时,不应用范围。在获取授权代码时应用范围。你可以在这里试试看它是如何工作的。您应该能够在People API v1Let us上看到作用域。您不能只添加一个新的作用域来重新授权您的用户,您需要再次看到“同意”屏幕弹出。我尝试运行以下命令:
curl-X GEThttps://www.googleapis.com/oauth2/v3/userinfo?access_token={my_access_token}
并从中获得了我的访问令牌,它可以正常工作,因此很可能您缺少电子邮件范围。我无法理解。我必须更改第一个呼叫吗?正如您在最新图片上看到的,响应中仍然只有一个作用域,即
userinfo.profile
。当您为访问令牌交换身份验证代码时,不应用范围。在获取授权代码时应用范围。你可以在这里试试看它是如何工作的。你应该能够在People API v1Let us上看到作用域。你不能只添加一个新的作用域来重新授权你的用户,你需要再次看到“同意”屏幕弹出。你的作用域之间有一个返回,它只需要是一个空格。它是一个空格。它似乎是一个返回,因为它太长了,但我发誓它是一个空格。首先,您的图像会看到您没有选择身份验证的授权选项卡。我必须设置什么?尝试oauth2,然后您应该能够在那里添加客户端id和所有内容。用户信息端点不会一直返回所有声明如果你添加了电子邮件范围,那么你真的应该通过people api。你的范围之间有一个返回,它只需要一个空格。它是一个空格。它似乎是一个返回,因为它太长了,但我发誓它是一个空格。首先,您的图像会看到您没有选择身份验证的授权选项卡。我必须设置什么?尝试oauth2,然后您应该能够在那里添加客户端id和所有内容。用户信息端点不会一直返回所有声明如果您添加了电子邮件范围,那么您真的应该通过people api。好的,我将尝试此方法,但我看不到带有访问令牌的参数。如果我使用这个方法,我必须设置其他参数(客户端id、客户端机密、访问令牌?)将承载访问令牌作为授权头发送,如我的回答中所示,我无法理解您的curl命令,因为我使用的是C#WebRequests,现在是Postman。url是。标题参数是Authorization和Accept?为什么不使用Google.net客户端库呢?ASP.net还是ASP.net核心?你为什么还要和邮递员一起做这件事?好的,我会试试这个方法,但是我看不到带有访问令牌的参数。如果我用这个