使用Node.js和Passport库实现在Yammer上发布信息

背景:

由于连续收到“每天投稿太多,看不清楚!”的批评,我决定在社内的Yammer平台上改用Microsoft Flow和Google Alert,并使用Node.js在一天内按批几次进行汇总投稿。

方法

スクリーンショット 2017-04-12 15.34.35.png

阅读

使用feedparser和request。
安装的步骤如下。

npm install --save feedparser request

用这种方式来实现。

var FeedParser = require('feedparser'),
    request = require('request');
var req=  request(url);
var feedparser = new FeedParser({});
var items=[];//ここに記事が入る。
    feedparser.on('meta', function(meta) {});
    feedparser.on('readable', function() {
      while(item = this.read()) {
        items.push(item);
      }
    });

    var out="";
    feedparser.on('end', function() {
      if(items.length > 0){
            //ここでYammerに出す記事を生成。
        items.forEach(function(item) {
          out = out + item.title +"\n"+ item.link + "\n\n";
        });
        out=out+"#"+val.name;
        console.log(val.name+">post");
      }else{
        console.log(val.name+">no post");
      }
    });

投稿

我将使用护照、护照Yammer3和Yammer。

实际上就是这样的。

スクリーンショット 2017-04-12 16.52.10.png

首先,安装相关的地方。

npm install --save passport-yammer3 yammer express express-session fs

发行访问令牌的过程大致是这样的…

var express = require('express'),
    session = require('express-session'),
    passport= require('passport'),
    request = require('request'),
    fs      = require("fs"),
    YammerStrategy = require('passport-yammer3').Strategy;
var app = express();
app.use(session({ secret: 'keyboard cat' }));
app.use(passport.initialize());
app.use(passport.session());

passport.use(new YammerStrategy({
    clientID:'*****************',
    clientSecret:'*****************',
    callbackURL:'http://localhost:3000/auth/yammer/callback'
  },
  function(accessToken, refreshToken, profile, done) {
    console.log(accessToken);//ここでtoken発行
    fs.writeFileSync("accessToken.txt",accessToken);
    return done(null, profile);
  }
));
passport.serializeUser(function(user, done) {done(null, user);});
passport.deserializeUser(function(user, done) {done(null, user);});
app.all('/ng',function(req,res){res.send('ng');});
app.all('/ok',function(req,res){res.send('ok');});
app.all('/auth/yammer',passport.authenticate('yammer'));
app.all('/',function(req,res){res.send('<a href="/auth/yammer">ここクリック!</a>');});

app.all('/auth/yammer/callback',
  passport.authenticate('yammer', {successRedirect: '/ok', failureRedirect: '/ng' })
);
app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

只要在上面讓它運行並訪問 localhost:3000,它應該可以運行。

最后,帖子呈现如下。

var Yammer = new require('yammer').Yammer;

var yammer_news_post = function(s){
  var accessToken=fs.readFileSync("accessToken.txt",'utf-8');//これがアクセストークン
  console.log(accessToken);
  var yam = new Yammer({ access_token: accessToken });
  var formdata={body:s,group_id:*********};
  yam.createMessage(formdata, {},function(r1,r2){});
}
bannerAds