我正在嘗試連接到 Google Shopping Products API 以創(chuàng)建一些新的產(chǎn)品項目。在我執(zhí)行更復(fù)雜的任務(wù)之前,我只是嘗試連接以獲取現(xiàn)有產(chǎn)品的列表。我已經(jīng)在 Google API 控制臺中設(shè)置了一個服務(wù)帳戶并下載了 json 密鑰文件。我已將文件保存到服務(wù)器。然后,我從 Google 的文檔中提取了所有示例,并嘗試將它們拼湊在一起。變量注釋:$KEY_FILE_LOCATION - 這是 json 服務(wù)帳戶密鑰文件的位置。$merchantid - 這是我的 Google Merchant Center 的商家 ID代碼: $client->setAuthConfig($KEY_FILE_LOCATION); $client->setApplicationName('Merchant Centre'); $client->setScopes('https://www.googleapis.com/auth/content'); echo "<br/><br/>client: ".json_encode($client); $url = "https://www.googleapis.com/content/v2/".$merchantid."/products"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); echo "<br/><br/>data: ".$data;我遇到的問題是如何將身份驗證連接到實際的谷歌購物電話。與 content/v2/merchantid/products 調(diào)用的連接返回以下響應(yīng): { "error": { "errors": [ { "domain": "global", "reason": "required", "message": "Login Required", "locationType": "header", "location": "Authorization" } ], "code": 401, "message": "Login Required" } }那么如何將 oauth 2.0 身份驗證服務(wù)帳戶 json 連接到實際調(diào)用。我在文檔或在線找不到任何關(guān)于您如何將這兩件事實際連接在一起的內(nèi)容。我已與其他 Google API 集成,但我所擁有的代碼都沒有提供實現(xiàn)此功能的清晰示例。編輯:通過進一步的文檔,我已經(jīng)設(shè)法制定出一個可能有效的流程。我需要使用 JWT 來獲取調(diào)用 API 的令牌 - 下面的代碼用于訪問令牌,但在最后一部分仍然失敗。此調(diào)用的響應(yīng)是 { "error": "invalid_grant", "error_description": "Invalid JWT Signature." }. JWT 的簽名部分是唯一看起來與 Google 給出的示例不同的部分 - 我的代碼輸出 43 個字符的簽名,而 googles 明顯更長。$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");我正在嘗試遵循此https://developers.google.com/identity/protocols/OAuth2ServiceAccount的“計算簽名”部分
2 回答

繁花不似錦
TA貢獻1851條經(jīng)驗 獲得超4個贊
401 表示請求未經(jīng)授權(quán)。您需要Authorization隨請求發(fā)送標頭,這取決于授權(quán)需要哪種身份驗證令牌(應(yīng)該在 api 文檔中)。要使用 cURL 在 PHP 中設(shè)置標頭(例如不記名令牌):
$header = array(
'Authorization: Bearer <insert-token-here>'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
- 2 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報
0/150
提交
取消