Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Meteor JS accounts-google package not working for me

I am a Meteor newbie and just ran into a problem using accounts-google (see below). All I did was follow the instructions on http://docs.meteor.com/#meteor_loginwithexternalservice. Any ideas on how to solve this issue and get Google login working? Thanks!

Terminal output:

W20141003-09:42:57.115(7)? (STDERR) 
W20141003-09:42:57.116(7)? (STDERR) /Users/aw/.meteor/packages/meteor-tool/.1.0.33.alt9dq++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:173
W20141003-09:42:57.116(7)? (STDERR)                         throw(ex);
W20141003-09:42:57.117(7)? (STDERR)                               ^
W20141003-09:42:57.118(7)? (STDERR) ReferenceError: ServiceConfiguration is not defined
W20141003-09:42:57.119(7)? (STDERR)     at app/server/accounts.js:26:1
W20141003-09:42:57.120(7)? (STDERR)     at app/server/accounts.js:35:3
W20141003-09:42:57.120(7)? (STDERR)     at /Users/aw/TS/.meteor/local/build/programs/server/boot.js:168:10
W20141003-09:42:57.120(7)? (STDERR)     at Array.forEach (native)
W20141003-09:42:57.121(7)? (STDERR)     at Function._.each._.forEach (/Users/aw/.meteor/packages/meteor-tool/.1.0.33.alt9dq++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/lib/node_modules/underscore/underscore.js:79:11)
W20141003-09:42:57.121(7)? (STDERR)     at /Users/aw/TS/.meteor/local/build/programs/server/boot.js:82:5
=> Exited with code: 8

When I comment out my service configuration code (below)

// first, remove configuration entry in case service is already configured
ServiceConfiguration.configurations.remove({
  service: "google"
});
ServiceConfiguration.configurations.insert({
  service: "google",
  clientId: "xxxxxxxx",
  secret: "xxxxxxxxx"
});

It asks me to enter the clientId and secret from the bootstrap dropdown gui. Then nothing happens after that.

After I add service-configuration, I get the following error after logging in: enter image description here

like image 239
FullStack Avatar asked Nov 29 '22 11:11

FullStack


2 Answers

It turns out that in addition to meteor add service-configuration, you have to complete a minimum of all of the following in Google's API website:

  1. https://console.developers.google.com/project
  2. "Create Project"
  3. Wait for the project to be provisioned
  4. "API & auth" on the sidebar, "Credentials"
  5. "Create new Client ID"
  6. Paste in "Authorized JavaScript origin" and "Authorized Redirect URI"
  7. "Create Client ID"
  8. Copy the Client Secret and Client ID to your app configuration
  9. "API & auth" on the sidebar "Consent screen"
  10. Enter the field "Product Name" and save

Steps 9 & 10 appear to be new requirements from Google in the past few days. See this Github ticket regarding the issue.

like image 191
FullStack Avatar answered Dec 04 '22 05:12

FullStack


You need to meteor add service-configuration manually.

The rest of your code looks good to me.

You also need to make sure that you configured things correctly in the Google Developers Console.

Add http://localhost:3000/_oauth/google?close in the REDIRECT URIS section, as well as http://localhost:3000/ for the JAVASCRIPT ORIGINS section.

This is for testing purpose on localhost, you'll need to add your deployed app actual ROOT_URL (http://www.example.com/) when pushing to production.

I addressed a similar problem here :

Meteor.user is null after (apparently) successful login

like image 26
saimeunt Avatar answered Dec 04 '22 05:12

saimeunt