尝试使用带有后端服务器的iOS在iOS上进行身份验证,该代码用于处理较旧的Google客户端库。
$client = new Google_Client();
$oauth2 = new Google_Service_Oauth2($client);
$client->setApplicationName('MyApp');
$client->setClientId($google_config["clientId"]);
$client->setClientSecret($google_config["clientSecret"]);
$client->setRedirectUri("");
$client->setDeveloperKey($google_config["developerKey"]));
Log::error("Google/authcode", $request->get('token'));
if (! isset($_SESSION['access_token'])) {
try {
$client->authenticate($request->get('token'));
} .... THROWS exception: Error fetching OAuth2 access token, message: 'invalid_grant:
尝试验证令牌:
https://www.googleapis.com/oauth2/v1/tokeninfo?id_token= https://www.googleapis.com/oauth2/v2/tokeninfo?id_token= https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=
所有工作成功显示令牌有效。
修改 在添加verifyIdToken调用后,JUST FOUND OUT: 无效的发卡行,https://accounts.google.com!= accounts.google.com 似乎这就是我失败的原因。我猜测iOS sdk与PHP的设置方式有所不同?或者这可能不相关,并且假设它不是iOS设备的服务器授权。因为如果我不断改变服务器端代码,即将OAUTH2_ISSUER变为https://accounts.google.com,我会收到错误的收件人错误,这是有道理的,因为我使用iOS客户端获取的tokenid来授权服务器。
旧版iOS应用程序也可以正常运行。但令牌完全不同,虽然验证也很好。 非常感谢任何帮助。
答案 0 :(得分:0)
我想我误解了文档。为了授权服务器,需要从
传递googleUser.serverAuthCode- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)googleUser
withError:(NSError *)error { ....
如果仅在iOS端用户googleUser.authentication.accessToken验证后端服务器googleUser.authentication.accessToken,则需要在服务器上验证或解析该服务器以获取电子邮件和其他数据。