---
lang: ja-jp
breaks: true
---
# Imgur Passport-Imgur を使用したOAuth2認証 Node.js 2021-05-10
> Passport-Imgur
> http://www.passportjs.org/packages/passport-imgur/
> mindfreakthemon/passport-imgur
> https://github.com/mindfreakthemon/passport-imgur
```shell=
$ npm install express
$ npm install passport
$ npm install passport-imgur
```
```javascript=
const passport = require('passport');
const ImgurStrategy = require('passport-imgur').Strategy;
const express = require("express");
const app = express();
const port = 8080;
const path = require('path');
const IMGUR_CLIENT_ID = "XXXXXXXXXXX";
const IMGUR_CLIENT_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
passport.use(
new ImgurStrategy(
{
clientID : IMGUR_CLIENT_ID,
clientSecret : IMGUR_CLIENT_SECRET,
//callbackURL : "http://127.0.0.1:" + port + "/auth/imgur/callback"
callbackURL : "https://xxxxxxxxxxx.net/auth/imgur/callback"
},
function(accessToken, refreshToken, profile, done) {
console.log("passport.use");
console.log("accessToken:" + accessToken);
console.log("refreshToken:" + refreshToken);
console.log("profile:" + profile);
// ここで、認証サーバから取得した情報をデータベース等に格納して管理する。
// User.findOrCreate({ imgurId: profile.id }, function (err, user) {
// console.log("err:" + err);
// console.log("user:" + user);
// return done(err, user);
// });
// ↓doneを呼び出すのがミソ。
return done(accessToken, refreshToken);
}
)
);
app.get('/auth/imgur',
passport.authenticate('imgur'),
function(req, res) {
// Successful authentication, redirect home.
console.log("/auth/imgur body:" + req.body + "");
}
);
app.get('/auth/imgur/callback',
passport.authenticate(
'imgur',
{ failureRedirect: '/login' }
),
function(req, res) {
// Successful authentication, redirect home.
console.log("/auth/imgur/callback body:" + req.body + " res.redirect");
res.redirect('/');
console.log("/auth/imgur/callback body:" + req.body);
}
);
app.listen(port, () => {
console.log(`Example app listening on port ${port}!`);
}
);
```
## passport-oauth2-refresh
> fiznool/passport-oauth2-refresh
> https://github.com/fiznool/passport-oauth2-refresh
> ExpressとPassport.jsでOAuth2 (4)有効期限切れのアクセストークンをリフレッシュする
> https://dackdive.hateblo.jp/entry/2017/09/28/100000
###### tags: `Imgur` `Passport-Imgur` `OAuth2` `Node.js`