google-api - 我使用什么 URL 将用户发送到 google oauth2 同意屏幕
问题描述
我正在尝试编写一个简单的应用程序来使用用户身份验证令牌和 html 请求访问 google 的 api,但是我正在努力寻找我发送给用户的 URL,以便他们选择个人资料并登录。
解决方案
URL 我也发送给用户,以便他们选择个人资料并登录。
问题是您混淆了授权和身份验证。Oauth2 用户可以授权您访问他们的数据,这与登录您的 OpenID 连接应用程序无关。
但是,您可能正在寻找的是 oauth2 同意屏幕,这是用户同意您的应用程序访问其数据的屏幕。
https://accounts.google.com/o/oauth2/auth?client_id={clientid}&redirect_uri={redirectURI}&scope={scope}&response_type=code
请记住,如果他们同意,这只是第一步,然后您将获得一个授权代码,您的应用程序必须随后将授权代码交换为可用于访问 api 的访问令牌。
您可能会发现此视频有助于理解填充 Oauth2 舞蹈。使用 curl 了解 Google OAuth 2.0
如果您要登录用户并检查他们的个人资料,这样会更好
[GoogleScopedAuthorize(PeopleServiceService.ScopeConstants.UserinfoProfile)]
public async Task UserProfile([FromServices] IGoogleAuthProvider auth)
{
var cred = await auth.GetCredentialAsync();
var service = new PeopleServiceService(new BaseClientService.Initializer()
{
HttpClientInitializer = cred
});
var request = service.People.Get("people/me");
request.PersonFields = "names";
var person = await request.ExecuteAsync();
return View(person);
}
完整的教程和配套视频可以在这里找到Asp .net core 3 和 Google login
推荐阅读
- xml - 在 SSISDB 中解密 XML
- python - 改组熊猫数据框
- python - Django 表单 ModelChoiceField 使用 __Str__ 或 label_for_Instance 又如何?
- java - Java 打印线程卡住了:为什么?
- java - 为什么 Java Interpreter 找不到我在 CLASSPATH 中指定的包?
- javascript - 只允许没有空格或数字的英文字母?
- firebase - firebase 依赖项不再起作用
- sqlalchemy - SQLAlchemy - 在多个查询中使用相同的连接
- nginx - 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败
- audio - Webm 到 Flac 使用 FFMPEG