У меня сложная проблема. Мне нужно запустить аутентификацию Google с помощью приложения iOS и передать значение code
, которое API Google возвращает к конечной точке сервера, которую я создал. Это отлично работает, если я инициировал запрос от приложения JavaScript
. Here Документация Google.redirect_uri_mismatch при попытке аутентификации с помощью API Google
Однако, если я инициирую запрос из приложения iOS с помощью следующего кода, он возвращается и говорит, что у меня есть несоответствие URI, потому что идентификатор oAuth, который я создал, если тип Web Application
. Если я использую Other
, я получу еще одну ошибку: Error fetching OAuth2 access token, message: 'invalid_grant: Invalid code.'.
Сказав это, вот как я начинаю аутентификацию из приложения iOS.
NSString *urlString = @"https://accounts.google.com/o/oauth2/token";
NSURL *tokenURL = [NSURL URLWithString:urlString];
// We'll make up an arbitrary redirectURI. The controller will watch for
// the server to redirect the web view to this URI, but this URI will not be
// loaded, so it need not be for any actual web page.
NSString *redirectURI = @"urn:ietf:wg:oauth:2.0:oob";
GTMOAuth2Authentication *auth = [GTMOAuth2Authentication authenticationWithServiceProvider:@"Google"
tokenURL:tokenURL
redirectURI:redirectURI
clientID:kClientID
clientSecret:kClientSecret];
Вы видите какие-либо вопиющие проблемы?
Альберто, спасибо, но 'redirectURI' здесь произвольное значение для IOS приложения. Это, по крайней мере, то, что говорится в документе. Если вы так не думаете, что должно быть «redirect_uri»? Это полный путь к API-интерфейсу сервера? –
redirectURI shoud будет полностью квалифицированным parth в папку или файл на вашем сервере. https://developers.google.com/api-client-library/php/auth/web-app –