问题
I spend already one day, crashed one glass and I am really angry about it, I do not understand what google want from me, and what is wrong.
I've enabled Google+ Api in developers console


$ch = curl_init('https://accounts.google.com/o/oauth2/token');
curl_setopt($ch,CURLOPT_POSTFIELDS,'code=4%2FPp1GWqC6PIr3wNYrZ5kK4T9oitxBoo0fBqBrVNQfE-g.ElKDUjQ7E28SoiIBeO6P2m-0RPaolgI&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fmyprivatedomain.local.com%2Foauth2callback&client_id=%mycliet_id%&client_secret=%mysecret%');
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
var_dump(curl_exec($ch));
created all like in instructions here: https://developers.google.com/+/web/signin/server-side-flow, gplus button appear on page, and it successfully request access for authorized user. but when I made step 8 Step 8: Initialize the Google API client library and start the Google+ service my request every time get response "error" : "redirect_uri_mismatch"
I know, that this error appear when you do not registered redirect_uri in Google Console, or when you make a type mistake in it, but I registered it, and also just for testing tried to setup different urls (changed domain names, changed protocols from https to https), but it never working! I have no idea what else I can check, please advice at least something.
回答1:
The docs say in Step 1. https://developers.google.com/+/web/signin/server-side-flow#step_1_create_a_client_id_and_client_secret that there must be no redirect URIs configured, only "Authorized JavaScript origins". In the authorization request and the token exchange, the redirect_uri
parameter value should be set to postmessage
.
Edit: Prior art on this: Google OAuth 2 authorization - Error: redirect_uri_mismatch
回答2:
Just ran into this problem myself. In my case, my credentials were set up for an installed application, NOT a web application. It seems that Installed application
s cannot be configured with redirect URL
s. I created a new credential as a web application
, and this gave me the option to set a series of redirect url
s.
Following the advice of this and other answers, I made sure the URL's matched (copy-paste) and this functioned correctly for me. I also did this in an Incognito Window.
The result was my browser being forwarded to the URL I put in the redirect_url
parameter with a special query string parameter code
populated with the code to use for the next step.
回答3:
If seeing this when using the Google IAP, if you attempt to visit your URL in a browser, you'll get the message:
- That’s an error.
Error: redirect_uri_mismatch
The redirect URI in the request, [your_url]/_gcp_gatekeeper/authenticate, does not match the ones authorized for the OAuth client. To update the authorized redirect URIs, visit: https://console.developers.google.com/apis/credentials/oauthclient/?project=[your_project_id]
if you visit the the URL it gives you (or indirectly via the console >> click edit on the correct "OAuth 2.0 client ID"), in the "Authorised redirect URIs" section, ensure you have the [your_url]/_gcp_gatekeeper/authenticate
URL set.
The _gcp_gatekeeper/authenticate
part is definitely required.
Google return the 400 error because of the mismatch in redirect URI.
来源:https://stackoverflow.com/questions/28321570/google-oauth-2-0-error-redirect-uri-mismatch