豆瓣oauth调用出错?

发布于 2022-08-29 17:09:39 字数 2187 浏览 27 评论 0

用nodejs的superagent客户端来调用豆瓣oauth,要获取的access_token的时候老出现javascript required_parameter_is_missing: client_id的问题。有人遇到这种问题吗?豆瓣上面有好多人问,但是都解决不了我的问题:

我的代码:

    exports.user_info = function (code) {
    return request.post(config.douban.authorize_token_url)
        .send("client_id", config.douban.app_id)
        .send("client_secret", config.douban.app_secret)
        .send("redirect_uri", config.back.code_back_url)
        .send("grant_type", "authorization_code")
        .send("code", code)
        .set("ContentType", "application/x-www-form-urlencoded")
        .end(function (res) {
            console.log(res.text);
            return request.get(config.douban.user_info_url + res.body.douban_user_id)
                .set("Authorization", "Bearer " + res.body.access_token)
                .end(function (response) {
                    console.log(response.text);
                    return response;
                });
        });
};

错误类似豆瓣上的问题,http://www.douban.com/group/topic/40590418/。再把app_id贴出来大家帮着看看:05a8eec5691e6dcf10facc503b5b496d。由于code可以正确得到所有app_id肯定没有问题。

按照楼下的建议,我用python试了一下:

>>> url = token_url + urllib.urlencode(params)
>>> url
'https://www.douban.com/service/auth2/tokencode=dbf492bfa678692e&client_secret=ec0faf30f04562a6&redirect_uri=https%3A%2F%2Fwww.douban.com%2Fservice%2Fauth2%2Ftoken&client_id=05a8eec5691e6dcf10facc503b5b496d&grant_type=authorization_code'
>>> url = token_url + "?"+urllib.urlencode(params)
>>> url
'https://www.douban.com/service/auth2/token?code=dbf492bfa678692e&client_secret=XXXXXXXXX&redirect_uri=https%3A%2F%2Fwww.douban.com%2Fservice%2Fauth2%2Ftoken&client_id=05a8eec5691e6dcf10facc503b5b496d&grant_type=authorization_code'
>>> from requests import *
>>> post(url)
<Response [400]>
>>> post(url).text
u'{"msg":"required_parameter_is_missing: client_id","code":113,"request":"POST \\/auth2\\/token"}'
>>> 

豆瓣上面好像说也可以把参数放在url后面所以我就试了一下,问题依旧啊。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱情眠于流年 2022-09-05 17:09:39

所有value需要urlencode

net实现

雅心素梦 2022-09-05 17:09:39

https://www.douban.com/service/auth2/tokencode=dbf492bfa难道不应该是https://www.douban.com/service/auth2/?tokencode=dbf492bfa吗?


update:

还有,为啥post提交要把参数作为GET方式过去……

南风几经秋 2022-09-05 17:09:39

setRequestHeader("Content-Type","application/x-www-form-urlencoded");

是Content-Type,不是ContentType

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文