问题
I am trying to setup my Meteor app to use Google logins, Here is my setup in the /server/config.js file
Accounts.loginServiceConfiguration.remove({
service: "google"
});
Accounts.loginServiceConfiguration.insert({
service: "google",
clientId: "XXXXXXX",
secret: "XXXXXX"
});
I have the setup on google pointed to localhost:3000 I have accounts-ui and accounts-google installed on my meteor app.
and I see the google login button on my app's homepage but when I click it I get:
Error: redirect_uri_mismatch The redirect URI in the request:
http://localhost:3000/_oauth/google?close
did not match a registered redirect URI
回答1:
I'm using Nitrous.io since I am developing on Windows. This article explains why google sees the wrong URI.
https://github.com/shoebappa/vagrant-meteor-windows/issues/9
Basically you need to launch meteor with a modified ROOT_URL so that it doesn't start with localhost.
Replace localhost.meteor.com with the URL that meteor is actually running at. ROOT_URL=http://localhost.meteor.com meteor
回答2:
You have to register the redirect URL with Google's APIs Console. Log on to the console and check what redirect URI was set up. Add localhost if necessary
Update:
I tried it myself and added
http://localhost:3000/_oauth/google?close
in the API console. I added accounts-google and accounts-ui to the Hello World app and added the login button to the page
<body>
{{loginButtons}}
{{> hello}}
</body>
I agreed to the requested permissions in the pop up and was logged in.
回答3:
Another idea : Did you removed the autopublish ? If so, you must publish the userData so your client can access to Users.
回答4:
I have the same problem on https://gotlog.in When I put https://gotlog.in/_oauth/google?close as the call back URL it get worth :
- That’s an error. Error: invalid_client no application name
And whe I put the good call back (https://gotlog.in/_oauth/google) as said in the setup popup I get the same :
- That’s an error. Error: redirect_uri_mismatch The redirect URI in the request: https://gotlog.in/_oauth/google?close did not match a registered redirect URI.
My root URL is setup and valid, but I have no userData published. But the documantation says : "By default, the current user's username, emails and profile are published to the client."
Edit: found the solution here : https://github.com/meteor/meteor/issues/2717
I was missing the consent screen information in the api console. And yes the callback URL has to have the '?close' at the end. Viva Meteor =)
来源:https://stackoverflow.com/questions/17960606/meteor-js-google-oauth-issues