如何指定OAuth受众群体(受众群体:服务器:client_id返回invalid_scope)

时间:2017-04-26 11:39:28

标签: windows oauth google-signin

我们正在编写Windows应用程序,我们也有后端服务器。我们希望实施Google登录。因此Windows应用程序询问用户,它接收JWT令牌并将其传递给我们的服务器。我是令牌,有2个键:audazp。在我们的其他平台(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

1 个答案:

答案 0 :(得分:1)

我认为我们应该在您请求令牌时提供此范围。如果我们使用Google / Sign-In库,只要我们设置服务器客户端ID,这可能会自动完成。

[GIDSignIn sharedInstance].serverClientID = @"YOUR_SERVER_CLIENT_ID_HERE"

顺便说一句,如果我正在寻找使用AppAuth实现相同的方法。我还没有找到任何解决方案。

请求令牌端点时,将Web客户端ID作为参数audience=WEB_CLIENT_ID发送。