尝试接收 WNS 访问令牌时出错 invalid_request
Error invalid_request when try to receive WNS access token
如 official doc 中所述,我使用的是请求构建的确切顺序:
POST /accesstoken.srf HTTP/1.1
Host: login.live.com
grant_type: client_credentials
client_id:/here's my client id from dashboard/
client_secret: /here's my secret from dashboard/
scope: notify.windows.com
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
我得到:
400 错误请求
Cache-Control → no-store
Connection → close
Content-Length → 76
Content-Type → application/json
Date → Fri, 01 Apr 2016 11:23:08 GMT
Pragma → no-cache
Server → Microsoft-IIS/8.5
X-Content-Type-Options → nosniff
X-WLID-Error → 0x8004101C
{
"error": "invalid_request",
"error_description": "Invalid request parameters"
}
我正在使用在线 request maker,不得不提的是 2 天前它运行良好,我收到了预期的令牌和到期时间。
我在商店中创建了一个新的应用程序来尝试新的 client_id 和 client_secret,但仍然是同样的问题,我也尝试过使用不同外部 IP 的其他 PC,但没有成功。 WNS 是常见的 windows 垃圾服务还是我遗漏了什么?
您似乎将 grant_type
、client_id
、client_secret
和 scope
作为请求的 Header
。但正如 official doc:
中所说
The cloud service submits these required parameters in the HTTP request body, using the "application/x-www-form-urlencoded" format. You must ensure that all parameters are URL encoded.
这些参数应该在 HTTP 请求中 body 和 URL 编码。使用Request Maker时,不需要添加任何请求header,因为默认的Content-Type
是application/x-www-form-urlencoded
。并且请注意使用 URL 编码的 client_id
和 client_secret
。请求如下:
请求Headers发送:
POST /accesstoken.srf HTTP/1.1
Host: login.live.com
Accept: */*
Content-Length: 210
Content-Type: application/x-www-form-urlencoded
回复Headers:
Cache-Control: no-store
Pragma: no-cache
Content-Length: 436
Content-Type: application/json
Server: Microsoft-IIS/8.5
X-Content-Type-Options: nosniff
Date: Wed, 06 Apr 2016 09:28:04 GMT
Connection: close
回复Body:
{"token_type":"bearer","access_token":"EgAaAQMAAAAEgAAAC4...y0yNTQ1NDU3MDAA","expires_in":86400}
如 official doc 中所述,我使用的是请求构建的确切顺序:
POST /accesstoken.srf HTTP/1.1
Host: login.live.com
grant_type: client_credentials
client_id:/here's my client id from dashboard/
client_secret: /here's my secret from dashboard/
scope: notify.windows.com
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
我得到:
400 错误请求
Cache-Control → no-store
Connection → close
Content-Length → 76
Content-Type → application/json
Date → Fri, 01 Apr 2016 11:23:08 GMT
Pragma → no-cache
Server → Microsoft-IIS/8.5
X-Content-Type-Options → nosniff
X-WLID-Error → 0x8004101C
{
"error": "invalid_request",
"error_description": "Invalid request parameters"
}
我正在使用在线 request maker,不得不提的是 2 天前它运行良好,我收到了预期的令牌和到期时间。
我在商店中创建了一个新的应用程序来尝试新的 client_id 和 client_secret,但仍然是同样的问题,我也尝试过使用不同外部 IP 的其他 PC,但没有成功。 WNS 是常见的 windows 垃圾服务还是我遗漏了什么?
您似乎将 grant_type
、client_id
、client_secret
和 scope
作为请求的 Header
。但正如 official doc:
The cloud service submits these required parameters in the HTTP request body, using the "application/x-www-form-urlencoded" format. You must ensure that all parameters are URL encoded.
这些参数应该在 HTTP 请求中 body 和 URL 编码。使用Request Maker时,不需要添加任何请求header,因为默认的Content-Type
是application/x-www-form-urlencoded
。并且请注意使用 URL 编码的 client_id
和 client_secret
。请求如下:
请求Headers发送:
POST /accesstoken.srf HTTP/1.1
Host: login.live.com
Accept: */*
Content-Length: 210
Content-Type: application/x-www-form-urlencoded
回复Headers:
Cache-Control: no-store
Pragma: no-cache
Content-Length: 436
Content-Type: application/json
Server: Microsoft-IIS/8.5
X-Content-Type-Options: nosniff
Date: Wed, 06 Apr 2016 09:28:04 GMT
Connection: close
回复Body:
{"token_type":"bearer","access_token":"EgAaAQMAAAAEgAAAC4...y0yNTQ1NDU3MDAA","expires_in":86400}