1

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

非常感谢您的帮助!

4

2 回答 2

2

您粘贴的网址:

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
于 2015-06-17T21:36:45.813 回答
2

请求它作为 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

非常感谢您的快速帮助!

于 2015-06-18T09:47:10.023 回答