尝试使用Google API进行身份验证时,redirect_uri_mismatch

时间:2015-09-15 23:32:23

标签: ios google-api

我有一个棘手的问题。我需要使用iOS应用启动Google身份验证,并将Google API返回的code值移交给我创建的服务器端点。如果我从JavaScript应用程序发起请求,这完全正常。 Here Google文档。

但是,如果我使用以下代码从iOS应用程序启动请求,它会返回并说我有一个URI不匹配,因为我创建的oAuth ID是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];

你看到任何明显的问题吗?

2 个答案:

答案 0 :(得分:0)

重定向网址必须注册到Google云应用中。它不能使用通配符。

我会说:确保它正在获得正确的重定向uri。 uri是精确的,这是至关重要的。

答案 1 :(得分:0)

该解决方案最终使用Google登录作为对用户进行身份验证的方式:https://developers.google.com/identity/sign-in/ios/