12.2.3.2. 发出请求
当客户端将现有内部令牌交换到外部令牌时,您要提供 requested_issuer 参数。参数必须是配置的身份提供程序的别名。
curl -X POST \
-d "client_id=starting-client" \
-d "client_secret=the client secret" \
--data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
-d "subject_token=...." \
--data-urlencode "requested_token_type=urn:ietf:params:oauth:token-type:access_token" \
-d "requested_issuer=google" \
http://localhost:8080/realms/myrealm/protocol/openid-connect/token
subject_token 参数必须是目标域的访问令牌。requested_token_type 参数必须是 urn:ietf:params:oauth:token-type:access_token 或 left blank。目前不支持其他请求的令牌类型。以下是您从此调用中获取的成功 JSON 响应示例:
{
"access_token" : "....",
"expires_in" : 3600
"account-link-url" : "https://...."
}
如果外部身份提供程序没有出于某种原因链接,您将获得带有此 JSON 文档的 HTTP 400 响应代码:
{
"error" : "....",
"error_description" : "..."
"account-link-url" : "https://...."
}
错误 声明将是 token_expired 或 not_linked。提供了 account-link-url 声明,以便客户端能够执行客户端 初始帐户链接。大多数(如果不是全部)供应商需要通过浏览器 OAuth 协议链接。使用 account-link-url 仅向其添加一个 redirect_uri 查询参数,您可以转发浏览器来执行链接。