Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I submit and process request params with an Oauth request?

I am using the MeanJS stack to develop a web application. The issue I'm having, is that my regular signup process has some unique parameters that are not common to an Oauth user profile. So, when I have the user go to signup with facebook, I move them to a new Signup form, that has them fill in the extra parameters, and then click "signup with facebook."

The routes are the same as the common MeanJS routes found here: https://github.com/meanjs/mean/blob/master/app/routes/users.server.routes.js

Specifically these lines:

app.route('/auth/facebook').get(passport.authenticate('facebook', {
    scope: ['email']
}));

app.route('/auth/facebook/callback').get(users.oauthCallback('facebook'));

What I would like to do, is have the extra parameters attached to the request object, so that when the auth process reaches the exports.saveOAuthUserProfile inside of: https://github.com/meanjs/mean/blob/master/app/controllers/users/users.authentication.server.controller.js this function will be able to access those parameters and save them as part of the user model.

I have tried attaching parameters to the Get request and accessing

req.params.paramId

but this will not work, because you cannot register a param loaded request with the facebook api (or at least it seems to be that way).

And I have read elsewhere on StackOverflow that you can load the request State, but that seems really odd to me. Here's the link for that: Facebook OAuth: custom callback_uri parameters

So, any guidance on how to load the extra data into the Oauth request, so that when I save the user profile I can access it and save it, would be great.

Thanks guys.

like image 281
Olivercodes Avatar asked May 30 '15 20:05

Olivercodes


1 Answers

It's not really clear to me what you want to achieve. What are the "extra" fields, and why don't you derive the fields from the user's profile directly?. About 98% of the FB Login implementations I've seen just use the "Login with Facebook" button and get the user's data during the OAuth process itself, and not manually entered by the user.

With passport-facebook for example, it's possible that you

a) Configure custom scopes

  • https://github.com/jaredhanson/passport-facebook#extended-permissions

b) Enrich the profile object with the custom scope's data

  • https://github.com/jaredhanson/passport-facebook#profile-fields

The profile object will then contain the additional requested fields automatically, and you don't need to tweak the request object itself.

like image 180
Tobi Avatar answered Sep 17 '22 05:09

Tobi