Ich versuche, die Google Identity Toolkit API für eine PHP-basierte Anwendung zu verwenden.Google Identity Toolkit API für PHP gibt INVALID_CLIENT zurück
Ich habe im Anschluss an die Schnellstart-Anleitung von Google finden Sie hier: https://developers.google.com/identity/toolkit/web/quickstart/php
ich die Schritte genau befolgt haben (und geprüft und doppelt geprüft).
Die Anmeldeschaltfläche wird auf der Seite index.php
angezeigt. Wenn Sie darauf klicken, wird auf die Seite widget.php
weitergeleitet. Ich kann wählen, welches Konto ich mit, anmelden möge und dann, wenn die erfolgreiche Anmeldeseite zurück (index.php
wieder) ich die folgende Fehlermeldung angezeigt:
Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Error refreshing the OAuth2 token, message: '{ "error" : "invalid_client", "error_description" : "The OAuth client was invalid." }'
Ich habe versucht, das OAuth-Client neu zu erstellen innerhalb der Google Entwicklerkonsole Einige Suchergebnisse, die zum Überprüfen der E-Mail- und Projektnamensfelder verwendet wurden, wurden auf dem Bildschirm "OAuth-Zustimmung" abgeschlossen. Alle diese Schritte wurden von mir durchgeführt.
Jede Hilfe & beraten würde sehr geschätzt werden. Hinweis: Ich verwende "Google" nur unter den verfügbaren Anbietern unter den Identity Toolkit-API-Einstellungen.
Meine Seite index.php:
<!DOCTYPE html>
<html>
<head>
<!-- 1: Load the Google Identity Toolkit helpers -->
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ .'/vendor/google/apiclient/src');
require_once __DIR__ . '/vendor/autoload.php';
$gitkitClient = Gitkit_Client::createFromFile(dirname(__FILE__) . '/gitkit-server-config.json');
$gitkitUser = $gitkitClient->getUserInRequest();
?>
<!-- End modification 1 -->
<script type="text/javascript" src="//www.gstatic.com/authtoolkit/js/gitkit.js"></script>
<link type=text/css rel=stylesheet href="//www.gstatic.com/authtoolkit/css/gitkit.css" />
<script type=text/javascript>
window.google.identitytoolkit.signInButton(
'#navbar',
{
widgetUrl: "/gitkit",
signOutUrl: "/index"
}
);
</script>
</head>
<body>
<div id="navbar"></div>
<!-- 2: Print the user information if a signed in user is present -->
<p>
<?php if ($gitkitUser) { ?>
Welcome back!<br><br>
Email: <?= $gitkitUser->getEmail() ?><br>
Id: <?= $gitkitUser->getUserId() ?><br>
Name: <?= $gitkitUser->getDisplayName() ?><br>
Identity provider: <?= $gitkitUser->getProviderId() ?><br>
<?php } else { ?>
You are not logged in yet.
<?php } ?>
</p>
<!-- End modification 2 -->
</body>
</html>
Meine gitkit.php Seite:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- Copy and paste here the client configuration from Developer Console into the config variable -->
<script type="text/javascript" src="//www.gstatic.com/authtoolkit/js/gitkit.js"></script>
<link type="text/css" rel="stylesheet" href="//www.gstatic.com/authtoolkit/css/gitkit.css" />
<script type="text/javascript">
var config =
{
"widgetUrl": "http://local.myfakedomain.com/gitkit",
"signInSuccessUrl": "/",
"signOutUrl": "/",
"oobActionUrl": "/",
"apiKey": "<my-api-key-here>",
"siteName": "this site",
"signInOptions": ["password","google"]
}
;
// The HTTP POST body should be escaped by the server to prevent XSS
window.google.identitytoolkit.start(
'#gitkitWidgetDiv', // accepts any CSS selector
config,
JSON.parse('<?php echo json_encode(file_get_contents("php://input")); ?>')
);
</script>
<!-- End modification -->
</head>
<body>
<!-- Include the sign in page widget with the matching 'gitkitWidgetDiv' id -->
<div id="gitkitWidgetDiv"></div>
<!-- End identity toolkit widget -->
</body>
</html>
mein gitkit-server-config.json Datei:
{
"clientId": "<my-client-id-here>",
"projectId": "<my-project-id-here>",
"serviceAccountEmail": "<my-serviceAccountEmail-here>",
"serviceAccountPrivateKeyFile": "<my-p12-KeyFile-location-here>",
"widgetUrl": "http://local.myfakedomain.com/gitkit",
"cookieName": "gtoken"
}
Danke, das hat es gelöst :) –
Das hat mein Problem gelöst. Hinweis: Hier finden Sie die richtige E-Mail-Adresse des Dienstkontos: https://console.developers.google.com/permissions/serviceaccounts Suchen Sie nach der Spalte "Dienstkonto-ID". – hirikarate