I was attempting to get the Google username + email id for users using Google Sign-in to log on to an embedded google apps script, but the username was being returned blank.
Our earlier php code, modified from something like this was returning only email and not username when trying with the default scope or even with addScope(profile). Even the REST API didn't help.
Finally found the issue - this page states that
"Warning: The support of Google Sign-In JavaScript platform library for Web is set to be
deprecated after March 31, 2023. The
solutions in this guide are based on this library and therefore also
deprecated.
Use instead the new
Google Identity Services for Web
solution to quickly and easily sign users into your app using their Google
accounts.
By default, new client IDs are now blocked from using the older platform
library; existing client IDs are unaffected. New client IDs created before
July 29th, 2022 may set the
plugin_name
to enable use of the legacy Google platform library."
So I modified the code to use the new Google Identity Services using this guide, and all was well. In order to not interfere with the earlier (working) authentication setup on the same server, which has a different set of authentication rules, the vendor, autoload etc are on a different path.
Code snippet:
$client = new Google_Client(['client_id' => $client_id]);
$payload = $client->verifyIdToken($_POST['credential']);
if ($payload) {
//print_r($payload);
//echo $payload['email'];
//echo $payload['name'];
// set the session variables needed by mediabank
$_SESSION["userEmail"] = $payload['email'];
$_SESSION["userName"] = $payload['name'];
header('Location: /the-embedded-page.php');
No comments:
Post a Comment