Search code examples
javascriptfacebooknode.jsfacebook-access-tokeneveryauth

NodeJS everyauth get access token


I am trying to get the access_token for a user using the FB API + everyauth module for NodeJS, and then I will make serverside graph API requests using the Facebook_Graph_API module to actually make the requests (which requires an access token).

According to the everyauth page:

Then, from within your views, you will have access to the following helpers methods attached to the helper, everyauth:

  • everyauth.loggedIn
  • everyauth.user - the User document associated with the session
  • everyauth.facebook - The is equivalent to what is stored at req.session.auth.facebook, so you can do things like ...
  • everyauth.facebook.user - returns the user json provided from the OAuth provider.
  • everyauth.facebook.accessToken - returns the access_token provided from the OAuth provider for authorized API calls on behalf of the user.
  • And you also get this pattern for other modules - e.g., everyauth.twitter.user, everyauth.github.user, etc.

Within my .jade templates I can make the requests just fine:

- if (everyauth.facebook)
h3 Facebook User Data
p= JSON.stringify(everyauth.facebook.user)
p= 'facebook access token is '+ everyauth.facebook.accessToken

My question is, how can I fetch the access token from the server-side javascript? I noticed that within

app.get('/', function (req, res) {
  res.render('home');
console.log(req.sessionStore.sessions.);
});

the req object does contain the access_token value but the corresponding JSON is very unwieldy to parse and not really practical for dozens of APIs. Is there any way I can simply retrieve the access_token from the server using everyauth?

Hypothetically I could simply use a bit of AJAX and send everyauth.facebook.accessToken back to the server from the client but I feel like this is somewhat impractical.


Solution

  • This section answered your question:

    https://github.com/bnoguchi/everyauth/blob/master/README.md#accessing-the-user