javascript - 如何使用 blogger api nodejs 插入帖子

标签 javascript node.js google-api blogger

根据 Docs,我已经在 request call 上验证了我的应用程序并尝试插入一个帖子:

var blogger = google.blogger('v3');
app.post('/creatGoogleBloggerPost', function(req, res, next){
    console.log('creatGoogleBloggerPost called');
    var oauth2Client = new google.auth.OAuth2();
    var key = require('./public_html/SoulSeeker2-1bxxxaaa727d.json');
    var jwtClient;

    jwtClient = new google.auth.JWT(key.client_email, null, key.private_key, ['https://www.googleapis.com/auth/blogger'], null);
    jwtClient.authorize(function(err, tokens) {
        console.log('retrieved tokens.access_token from google', tokens.access_token);
        google.options({
            auth: jwtClient
        });
        if (err) {
            console.log(err);
            return;
        } else {
            blogger.posts.insert({
                auth: jwtClient,
                blogId: '4113791741191234135',
                resource: {
                  title: 'Sample rootscope',
                  content: 'Content rootscope'
                }
            }, function(){
                console.log('success');
            });
        }
    });
});

我正在取回 token ,它还会打印回调 success message 但是,当我检查博客时没有插入任何帖子。也没有错误。这里可能出了什么问题?

更新:

实际上 google-blogger-api 不接受服务帐户 token 。所以修改我的代码以使用 oauth2.0node-passport 但仍然出现 login error:

blogger.posts.insert({
    Authorization: 'Bearer ' +USERS.accessToken,
    blogId: '4113796741591234135',
    resource: {
      title: 'Sample rootscope',
      content: 'Content rootscope'
    }
    }, function(err, reponse){
    if(err){
        console.log('error ', err);
    } else {
        console.log('blog post success in google blogger' , reponse);
    }
});

我已经通过了 auth token 但我现在得到这样的错误:

error  { [Error: Login Required]
  code: 401,
  errors:
   [ { domain: 'global',
       reason: 'required',
       message: 'Login Required',
       locationType: 'header',
       location: 'Authorization' } ] }

我用的是官方谷歌blogger api .我想我没有在 header 中传递 token 。如何正确传递 token 以解决此问题?

最佳答案

实际的问题是我不能传递原始的access token,我需要像这样包装它:

authObj = new  google.auth.OAuth2();
authObj.setCredentials({
    access_token: USERS.accessToken
});   

blogger-api 显然没有记录上面的“包装部分”

然后在下面的调用中传递它,如 auth:authObj 所示:

blogger.posts.insert({
    auth: authObj,
    blogId: '4113796741591234135',
    resource: {
      title: 'Sample rootscope',
      content: 'Content rootscope'
    }
    }, function(err, reponse){
    if(err){
        console.log('error ', err);
    } else {
        console.log('blog post success in google blogger' , reponse);
    }
});

关于javascript - 如何使用 blogger api nodejs 插入帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43509803/

相关文章:

javascript - 从 childSnapshot.key 接收 null

javascript - Express 框架给出了一个非常奇怪的错误

javascript - 将数据从React传递到 Node 服务器

php - 如何在 PHP 中获取当前页面的 Google +1 计数?

javascript - 尽管 API 已激活,但尝试使用嵌入 map API 时出现 ApiNotActivatedMapError

javascript - 当 * 后跟/时,用于捕获代码注释的正则表达式不起作用

javascript - 使用 Gloda GlodaIndexer 手动或显式索引 Thunderbird 中的文件夹

android - 在Firebase登录上实现Smart Lock密码

javascript - JS map v3 : custom marker with user profile picture

javascript - 在 Node.js 中如何将 multipart/form-data 上传的图像转换为 base64 格式