尝试在带有后端服务器的 iOS 上使用 Google 进行身份验证,代码用于与旧的 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 调用后才发现: 无效的发行者,https ://accounts.google.com != accounts.google.com似乎这就是我失败的原因。我猜 iOS sdk 与 PHP 的设置不同?或者这可能不相关,并假设它不是来自 iOS 设备的服务器授权。因为如果我不断更改服务器端代码的内容,即将 OAUTH2_ISSUER 更改为https://accounts.google.com,我会收到错误的收件人错误,这是有道理的,因为我使用的是 iOS 客户端获取的 tokenid 来授权服务器。
旧版本的 iOS 应用程序也可以正常工作。但是令牌完全不同,尽管验证也很好。任何帮助是极大的赞赏。