Search code examples
javascriptnode.jsinstagraminstagram-api

Get instagram access token using nodejs


I tried to get access token without using browser request (by http.get() request ) using instagram-node module but I cant able to receive access token anyone please give me a solution for without browser interaction.

var express = require("express");
var app = express();
var http = require('http')
var api = require('instagram-node').instagram();
 app.configure(function () {
 app.use(express.cookieParser());
 app.use(express.session({ secret: 'secret' }));
 app.use(express.bodyParser());
 app.use(express.json());
 app.use(express.urlencoded());
});
api.use({
   client_id: '',
   client_secret: ''
 });
 var redirect_uri = 'http://localhost:5000/handleauth';

 exports.authorize_user = function(req, res) {
   res.redirect(api.get_authorization_url(redirect_uri, { scope: ['likes'],state: 'a state' }));
  };

  exports.handleauth = function(req, res) {
   api.authorize_user('', redirect_uri, function(err, result) {
    if (err) {
     console.log(err.body);
     res.send("Didn't work");
    } else {
     console.log('Yay! Access token is ' + result.access_token);
     res.send('You made it!!');
    }
   });
  };
 app.get('/authorize_user', exports.authorize_user);
 app.get('/handleauth', exports.handleauth);
 http.createServer(app).listen(5000, function(){
 console.log("Express server listening on port 5000");
     **http.get('http://localhost:5000/authorize_user', function(res) {
      console.log("statusCode: ", res.statusCode);
      });**
  });

Solution

  • You can't get an access token without a browser request because it has to prompt the user to login and accept permissions. Getting "http://localhost:5000/authorize_user" redirects to instagram.com, and then if you click okay it returns to your website.