首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS Patreon帐户链接

NodeJS Patreon帐户链接
EN

Stack Overflow用户
提问于 2016-11-03 00:25:27
回答 1查看 403关注 0票数 0

我正在尝试将我网站上的用户帐户连接到patreon。为了响应步骤3,我一直收到一个access_denied错误消息,我正在跟踪这个文档

我的节点服务器代码如下所示:

代码语言:javascript
复制
  socket.on("patreon_register",function(code,user){
        var reqString = "api.patreon.com/oauth2/token?code="
                        +code
                        +"&grant_type=authorization_code&client_id="
                        +settings.patreon.Client_ID
                        +"&client_secret="
                        +settings.patreon.Client_Secret
                        +"&redirect_uri="
                        +"http%3A%2F%2Fwww.levisinger.com%2F%3Fpage%3Dpatreon_success",                        
        req = querystring.stringify({
            "code": code,
            "grant_type": "authorization_code",
            "client_id": settings.patreon.Client_ID,
            "client_secret": settings.patreon.Client_Secret,
            "redirect_uri": "http%3A%2F%2Fwww.levisinger.com%2F%3Fpage%3Dpatreon_success"
            }),
        post_options = {
                host: 'api.patreon.com',
                port: '80',
                path: '/oauth2/token',
                method: 'POST',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded',
                    'Content-Length': Buffer.byteLength(req)
                }
            };        
        // Set up the request
        console.log(req);
        var post_req = http.request(post_options, function(res) {
            res.setEncoding('utf8');
            res.on('data', function (chunk) {
                console.log(chunk);
                if(
                    chunk.access_token &&
                    chunk.refresh_token &&
                    chunk.expires_in &&
                    chunk.scope &&
                    chunk.token_type
                ){
                    Auth.linkPatreon(user,chunk,function(err,res){
                        if(err){ socket.emit('patreon_register',false,res); }
                        else { socket.emit('patreon_register',true,res); }
                    });
                }
            });
        });
        // post the data
        post_req.write(req);
        post_req.end();
    });    

实际发送到服务器的req变量如下(当然,将我的代码更改为泛型值)

代码语言:javascript
复制
code=MY_RESPONSE_CODE&grant_type=authorization_code&client_id=MY_CLIENT_ID&client_secret=MY_CLIENT_SECRET&redirect_uri=MY_RESPONSE_URI

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-03 23:01:43

最后,我的服务器看起来像这样并且正在工作:

代码语言:javascript
复制
socket.on("patreon_register",function(code,user){
    var req = querystring.stringify({
            code: code,
            grant_type: "authorization_code",
            client_id: settings.patreon.Client_ID,
            client_secret: settings.patreon.Client_Secret,
            redirect_uri: settings.patreon.redirect_uri
        }),
    post_options = {
            host: 'api.patreon.com',
            port: '80',
            path: '/oauth2/token',
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'Content-Length': Buffer.byteLength(req)
            }
        };        
    // Set up the request
    console.log(req);
    var post_req = http.request(post_options, function(res) {
        res.setEncoding('utf8');
        res.on('data', function (chunk) {
            chunk = JSON.parse(chunk);
            console.log(chunk);
            if(!chunk["error"]){
                console.log("Linking!");
                Auth.linkPatreon(user,chunk,function(err,res){
                    if(err){ socket.emit('patreon_register',false,res); }
                    else { socket.emit('patreon_register',true,res); }
                    console.log("Linked!");
                });
            }
        });
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40391941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档