Próbuję dodać autoryzację Google+ do strony z wordpressami. Czego chcę: po autoryzacji w Google+, jeśli użytkownik nie jest zarejestrowany na stronie - przekierowuję go na stronę, na której wprowadza swoją nazwę użytkownika; jeśli użytkownik już zarejestrowany - to będzie zalogowany tutaj mój kod JS:Logowanie przez Google+ dla aplikacji po stronie serwera, które nie działają
function doGooglePlusLogin(authResult) {
if (authResult['code']) {
jQuery('#signinButton').attr('style', 'display: none');
jQuery.ajax({
url: '<?php echo site_url(); ?>/wp-admin/admin-ajax.php',
type: 'get',
dataType: 'json',
data: {
action: 'login_gplus',
code: authResult['code']
},
success: function(result) {
},
});
} else if (authResult['error']) {
}
}
tutaj mój kod php:
function login_gplus() {
$response = array();
if (isset($_GET['code']) && !empty($_GET['code'])) {
@session_start();
$client = new Google_Client();
$client->setApplicationName('Test');
$client->setAccessType('offline');
$client->setClientId(get_option(SOCIAL_GPLUS_CLIENT_ID));
$client->setClientSecret(get_option(SOCIAL_GPLUS_CLIENT_SECRET));
$client->setDeveloperKey(get_option(SOCIAL_GPLUS_API_KEY));
$client->setRedirectUri(get_option(SOCIAL_GPLUS_REDIRECT_URIS));
$client->setApprovalPrompt('auto');
$code = $_GET['code'];
$client->authenticate($code);
$token = json_decode($client->getAccessToken());
$reqUrl = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=' . $token->access_token;
$req = new Google_HttpRequest($reqUrl);
$tokenInfo = json_decode(
$client->getIo()
->authenticatedRequest($req)
->getResponseBody());
if ($tokenInfo->error) {
$response['test'] = $tokenInfo->error;
send_json_response($response);
die();
}
if ($tokenInfo->audience != get_option(SOCIAL_GPLUS_CLIENT_ID)) {
$response['test'] = "Token's client ID does not match app's.";
send_json_response($response);
die();
}
$response['test'] = 'Succesfully connected with token: ' . print_r($token, true);
}
send_json_response($response);
die();
}
Użytkownik pomyślnie upoważnione w Google+, ale w php mam to:
.Błąd krytyczny: nieprzechwycony wyjątek "Google_AuthException" z komunikatem "Błąd podczas pobierania tokenu dostępu OAuth2, wiadomość:" redirect_uri_mismatch "w/var/www/html/v4/wp-content/plugins/social/google-plus/google-api /auth/Google_OAuth2.php:113Trasa śledzenia: # 0/var/www/html/v4 /wp-content/plugins/social/google-plus/google-api/Google_Client.php(131): Google_OAuth2-> authenticate (Array, '4/ScmpTqEIWt0SJ ...') # 1/var/www/html/v4 /wp-content/plugins/social/google-plus/functions.php(35): Google_Client-> authenticate ('4/ScmpTqEIWt0SJ ...') # 2 [funkcja wewnętrzna]: login_gplus ('') # 3/var /www/html/v4/wp-includes/plugin.php(406): call_user_func_array ('login_gplus', Array) # 4 /var/www/html/v4/wp-admin/admin-ajax.php(74): do_action ('wp_ajax_nopriv _...') # 5 {główny} wrzucony na /var/www/html/v4/wp-content/plugins/social/google-plus/google-api/auth/Google_OAuth2.php on line 113
W ustawieniach aplikacji Przekierowanie identyfikatorów URI określonych jako http://example.com/wp-admin/admin-ajax.php. Co mam zrobić źle?
EDIT:
Google+ Sign-In definicji przycisku:
<span id="signinButton">
<span class="g-signin"
data-callback="doGooglePlusLogin"
data-clientid="<?php echo $this->gplus_client_id; ?>"
data-cookiepolicy="single_host_origin" data-accesstype="offline"
data-requestvisibleactions="http://schemas.google.com/AddActivity"
data-scope="https://www.googleapis.com/auth/plus.login">
</span>
</span>
SOCIAL_GPLUS_REDIRECT_URIS jest example.com/wp-admin/admin-ajax.php?action=login_gplus
Czy używasz [przycisku logowania do Google+] (https://developers.google.com/+/web/signin/) lub sam jesteś inicjatorem przepływu? Proszę napisać swój kod front-end, który pokazuje, w jaki sposób uruchamiany jest ten przepływ. Musimy zobaczyć parametry konfiguracyjne przekazywane do Google. (ukryj swój identyfikator klienta. Musimy również zobaczyć na twojej stronie PHP, jakie wartości są obecne dla twojego SOCIAL_GPLUS_REDIRECT_URIS – BrettJ
Używam przycisku logowania Google+. ' ' – Peter
SOCIAL_GPLUS_REDIRECT_URIS jest http://example.com/wp-admin/admin-ajax.php?action=login_gplus – Peter