Coinbase Oauth2 - 令牌请求 URL - “404 未找到”
Coinbase Oauth2 - token request URL - "404 Not found"
Coinbase Oauth 授权的第一步似乎工作正常。
我通过以下 URL:
请求客户代码
"https://www.coinbase.com/oauth/authorize?response_type=code&client_id=XXXXXXXXXXXXXXXXXXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=user+balance"
我通过 URL 找回了代码。
然后尝试使用给定的 CODE 和 CLIENT SECRET 和 CLIENT ID 请求令牌:
"https://api.coinbase.com/oauth/token&grant_type=authorization_code&code=XXXXXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&client_id=XXXXXXX&client_secret=XXXXXXX"
我得到一个“404 Not found”错误..
URL中是否有任何明显的错误..或者它很可能是
代码或秘密等本身?
如果是.. 有什么重要的信息要知道吗?
描述中的所有内容:
https://developers.coinbase.com/docs/wallet/authentication
非常感谢您的帮助!
您粘贴的URL:
https://api.coinbase.com/oauth/token&grant_type=authorization_code&code=XXXXXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&client_id=XXXXXXX&client_secret=XXXXXXX
不包含查询组件,因为其中没有 ?
字符。你应该使用:
https://api.coinbase.com/oauth/token?grant_type=authorization_code&code=XXXXXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&client_id=XXXXXXX&client_secret=XXXXXXX
您指向的文档似乎是该错误的来源。
此外,OAuth 2.0 规范说要对令牌端点使用 POST,这在文档中也有说明,但示例中没有明确说明。因此,您应该将参数作为表单编码值发送到 HTTP POST,例如等同于以下 cURL 请求:
curl -d "grant_type=authorization_code&code=XXXXXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&client_id=XXXXXXX&client_secret=XXXXXXX" https://api.coinbase.com/oauth/token
请求它作为 POST BODY 完成了工作!
虽然重要的变化:
- 重定向 uri 需要是一个正确的外部域,移动应用程序的 uri 将产生 401 错误..
-ascii编码
import urllib
import urllib.request
import urllib.parse
data = urllib.parse.urlencode({'grant_type':'authorization_code', 'code': 'XXXXXX',
'redirect_uri': 'https://XXXXXX', 'client_id': 'XXXXXXXXXXX',
'client_secret' : 'XXXXXXXXXXX'})
binary_data = data.encode('ascii')
try:
response = urllib.request.urlopen('https://api.coinbase.com/oauth/token', data=binary_data)
print(response.status)
print(response.read())
except urllib.error.HTTPError as e:
print('%s %s' %(e.code, e.reason))
粗略结构来自:
https://docs.python.org/3/library/urllib.request.html
非常感谢您的快速帮助!
Coinbase Oauth 授权的第一步似乎工作正常。 我通过以下 URL:
请求客户代码"https://www.coinbase.com/oauth/authorize?response_type=code&client_id=XXXXXXXXXXXXXXXXXXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=user+balance"
我通过 URL 找回了代码。 然后尝试使用给定的 CODE 和 CLIENT SECRET 和 CLIENT ID 请求令牌:
"https://api.coinbase.com/oauth/token&grant_type=authorization_code&code=XXXXXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&client_id=XXXXXXX&client_secret=XXXXXXX"
我得到一个“404 Not found”错误..
URL中是否有任何明显的错误..或者它很可能是 代码或秘密等本身? 如果是.. 有什么重要的信息要知道吗?
描述中的所有内容: https://developers.coinbase.com/docs/wallet/authentication
非常感谢您的帮助!
您粘贴的URL:
https://api.coinbase.com/oauth/token&grant_type=authorization_code&code=XXXXXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&client_id=XXXXXXX&client_secret=XXXXXXX
不包含查询组件,因为其中没有 ?
字符。你应该使用:
https://api.coinbase.com/oauth/token?grant_type=authorization_code&code=XXXXXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&client_id=XXXXXXX&client_secret=XXXXXXX
您指向的文档似乎是该错误的来源。
此外,OAuth 2.0 规范说要对令牌端点使用 POST,这在文档中也有说明,但示例中没有明确说明。因此,您应该将参数作为表单编码值发送到 HTTP POST,例如等同于以下 cURL 请求:
curl -d "grant_type=authorization_code&code=XXXXXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&client_id=XXXXXXX&client_secret=XXXXXXX" https://api.coinbase.com/oauth/token
请求它作为 POST BODY 完成了工作! 虽然重要的变化: - 重定向 uri 需要是一个正确的外部域,移动应用程序的 uri 将产生 401 错误.. -ascii编码
import urllib
import urllib.request
import urllib.parse
data = urllib.parse.urlencode({'grant_type':'authorization_code', 'code': 'XXXXXX',
'redirect_uri': 'https://XXXXXX', 'client_id': 'XXXXXXXXXXX',
'client_secret' : 'XXXXXXXXXXX'})
binary_data = data.encode('ascii')
try:
response = urllib.request.urlopen('https://api.coinbase.com/oauth/token', data=binary_data)
print(response.status)
print(response.read())
except urllib.error.HTTPError as e:
print('%s %s' %(e.code, e.reason))
粗略结构来自: https://docs.python.org/3/library/urllib.request.html
非常感谢您的快速帮助!