Google Merchant Connect подключается с помощью PHP Curl

Дима Александров

Пользователь
Регистрация
16.01.13
Сообщения
2
Реакции
0
Баллы
1
Я пытаюсь подключиться к продавцу Google с помощью php Curl. Я продолжаю получать сообщение об ошибке со статусом": "НЕ АУТЕНТИФИКАЦИЯ" Я могу нормально подключиться к API https://developers.google.com/shopping-content/reference/rest/v2/products/ и запустите примеры оттуда. Я также могу запускать тесты из https://developers.google.com/oauthplayground/
Google Merchant Connect подключается с помощью PHP Curl
Я нашел это, но продолжаю получать неаутентифицированную ошибку
Код:
$merchantid = xxxxxxxxx; //this is a 9 digit code found in top left of Merchant Center
$email = '[email protected]'; //this is the email address assigned to the service account
$privatekey = "-----BEGIN PRIVATE KEY-----\nXXXXXapprox 6 lines long key from json fileXXXXXX\n-----END PRIVATE KEY-----\n"; //this is the long key that you download within the json file at the end of the service account setup
$header = json_encode(['alg' => 'RS256', 'typ' => 'JWT']);
$base64UrlHeader = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($header));
$iat = strtotime("now");
$exp = strtotime("+1 hour");
$currenttime = date("H:i:s");
$claimset = json_encode(['iss' => $email,
'scope' => '[URL='https://wmlogs.com/yti/bUGGUbnRodHRwczovL2dvb2dsZWFwaXMuY29tL2F1dGgvY29ud92Y']https://www.googleapis.com/auth/content[/URL]',
'aud' => '[URL='https://wmlogs.com/yti/Zs22sZW5odHRwczovL2dvb2dsZWFwaXMuY29tL29hdXRoMi92NC90b9CN']https://www.googleapis.com/oauth2/v4/token[/URL]',
'exp' => $exp,
'iat' => $iat]);
$base64UrlClaimSet = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($claimset));
$binary_signature = "";
$algo = "SHA256";
openssl_sign($base64UrlHeader.".".$base64UrlClaimSet, $binary_signature, $privatekey, $algo);
$jwtSignature = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($binary_signature));
$jwt = $base64UrlHeader . "." . $base64UrlClaimSet . "." . $jwtSignature;
$url = "[URL='https://wmlogs.com/yti/Zs22sZW5odHRwczovL2dvb2dsZWFwaXMuY29tL29hdXRoMi92NC90b9CN']https://www.googleapis.com/oauth2/v4/token[/URL]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=".$jwt);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$accesstoken = substr($data, strpos($data, 'access_token') + 16);
$arr = explode('"',trim($accesstoken));
$accesstoken = $arr[0];
$url = "[URL='https://wmlogs.com/yti/MY33YMi9odHRwczovL3Nob3BwaW5nY29udGVudC5nb29nbGVhcGlzLmNvbS9jb250ZW50L5WZ']https://shoppingcontent.googleapis.com/content/v2/".$merchantid."/products[/URL]";
$header = array( 'Authorization: Bearer '.$accesstoken
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
echo "<br/><br/>data: ".$data;
PHP:
любые предложения или указатели в правильном направлении будут очень признательны.
 

Schizo

Пользователь
Регистрация
06.08.12
Сообщения
3
Реакции
0
Баллы
1
Я не работал конкретно с Google Merchant API, но работал с другими подобными API.
Я думаю, что это не удалось, потому что сначала вам нужно отправить другой запрос в Google, который вернет токен авторизации для следующего запроса.
Это делается в фоновом режиме.
Затем этот токен необходимо отправить в Google вместе с перенаправлением клиента для совершения платежа.
Я думаю, что вы пропускаете фоновый шаг, поэтому вы получаете ошибку авторизации из-за отсутствия токена.
 
Сверху Снизу