我尝试通过传递下面屏幕截图中显示的参数来使用REST API获取访问令牌,但我面临错误Required parameter is missing: grant_type
。我在Chrome浏览器中尝试过cURL和Advanced Rest API。我使用cURL和Advanced REST API发送这些参数:
client_secret;xxx
refresh_token;
redirect_uri;https%3A%2F%2Fwww%2Eexample%2Ecom%2Foauth2callback
scope;https://www.googleapis.com/auth/drive
client_id;xxxxxxxx.apps.googleusercontent.com
access_token;
cURL语法:
D:\>curl -k --header Content-Type=application/x-www-form-urlencoded -i -X POST "https://accounts.google.com/o/oauth2/token" -F 'code=4%2FdpbtMVUpzNFAfGHlxrNvfMlvHrPWk_m8y2I-thDdsLk.wvBSFgWEqW0Zcp7tdiljKKZFG-jOlgI' -F 'client_id=xxxxxxxx.apps.googleusercontent.com' -F 'client_secret=xxx' -F 'redirect_uri=https%3A%2F%2Fwww%2Eexample%2Ecom%2Foauth2callback' -F 'grant_type=authorization_code'
如何解决此问题?
答案 0 :(得分:0)
显然,您正在调用令牌端点,以code
作为授权码授权的一部分交换access_token
。一些事情:
-F
标记,因为它会生成multipart-formdata
标题,但您需要使用www-form-urlencoded
生成的-d
-k
标记,因为这会让事情变得不安全; Google会提供您应该检查的有效SSL证书Content-Type
参数放在引号添加一些额外的语法优化后,您应该可以使用:
curl -v -i \
-d "code=4%2FdpbtMVUpzNFAfGHlxrNvfMlvHrPWk_m8y2I-thDdsLk.wvBSFgWEqW0Zcp7tdiljKKZFG-jOlgI" \
-d 'client_id=xxxxxxxx.apps.googleusercontent.com' \
-d 'client_secret=xxx' \
-d 'redirect_uri=https%3A%2F%2Fwww%2Eexample%2Ecom%2Foauth2callback' \
-d 'grant_type=authorization_code' \
https://accounts.google.com/o/oauth2/token