我们正在编写Windows应用程序,我们也有后端服务器。我们希望实施Google登录。因此Windows应用程序询问用户,它接收JWT令牌并将其传递给我们的服务器。我是令牌,有2个键:aud
和azp
。在我们的其他平台(iOS,Android)上,azp
是来自Google Cloud Console的应用程序的 OAuth客户端ID ,aud
是 OAuth客户端ID 用于我们的服务器。但在Windows上,它们都是一样的。在其他平台上,这由Google提供的库处理,但在Windows上,我们使用低级 HTTP。但我们找不到指定aud
的方法。我们怎么做呢?
编辑:我在audience:server:client_id:...
中发现了scope
,但它对我也不起作用。它给了我Error: invalid_scope
。
这是请求(使用HTTPie):
http -v https://accounts.google.com/o/oauth2/auth client_id==windows-ios-app-client_id.apps.googleusercontent.com redirect_uri==my.bundle.id: response_type==code 'scope==audience:server:client_id:server-client-id.apps.googleusercontent.com'
GET /o/oauth2/auth?client_id=windows-ios-app-client_id.apps.googleusercontent.com&redirect_uri=my.bundle.id%3A&response_type=code&scope=audience%3Aserver%3Aclient_id%3Aserver-client-id.apps.googleusercontent.com HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: accounts.google.com
User-Agent: HTTPie/0.9.2
答案 0 :(得分:1)
我认为我们应该在您请求令牌时提供此范围。如果我们使用Google / Sign-In库,只要我们设置服务器客户端ID,这可能会自动完成。
[GIDSignIn sharedInstance].serverClientID = @"YOUR_SERVER_CLIENT_ID_HERE"
顺便说一句,如果我正在寻找使用AppAuth实现相同的方法。我还没有找到任何解决方案。
请求令牌端点时,将Web客户端ID作为参数audience=WEB_CLIENT_ID
发送。