第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

HERE REST API OAuth 2.0 令牌請(qǐng)求(帶有 1.0 標(biāo)頭)錯(cuò)誤

HERE REST API OAuth 2.0 令牌請(qǐng)求(帶有 1.0 標(biāo)頭)錯(cuò)誤

PHP
寶慕林4294392 2022-10-22 16:55:11
我一直在嘗試讓我的 PHP 應(yīng)用程序創(chuàng)建一個(gè)成功的令牌請(qǐng)求,因?yàn)樽罱K按照此處的文檔設(shè)法讓它與 Postman 一起工作顯然 API 使用的是 OAuth 2.0,這就是為什么我希望發(fā)送grant_type, client_id,client_secret和expires_in(如果我沒(méi)有指定這些字段之一,那么 API 將成功告訴我它丟失了)?,F(xiàn)在我遇到的問(wèn)題是我必須生成這個(gè) OAuth 1.0 授權(quán)標(biāo)頭,Postman 這樣做似乎沒(méi)有問(wèn)題,但是嘗試在 PHP 中執(zhí)行它我只是從 API 返回一個(gè)關(guān)于簽名的錯(cuò)誤不匹配:array:6 [  "errorId" => "ERROR-fde4f0f1-9d5c-43fd-80eb-056cbf2c3259"  "httpStatus" => 401  "errorCode" => 401300  "message" => "Signature mismatch. Authorization signature or client credential is wrong."  "error" => "invalid_client"  "error_description" => "errorCode: '401300'. Signature mismatch. Authorization signature or client credential is wrong."]我嘗試了各種調(diào)試,其中很多都給了我不同的錯(cuò)誤,然后我一直回到這個(gè)錯(cuò)誤,所以簽名一定是問(wèn)題所在。我在這里創(chuàng)建了以下類(lèi)來(lái)處理生成標(biāo)頭,從包中的類(lèi)獲得一些指導(dǎo)guzzle/oauth-subscriber。這是生成的請(qǐng)求標(biāo)頭的示例:array:2 [  "Content-Type" => "application/x-www-form-urlencoded"  "Authorization" => "OAuth oauth_consumer_key="XXXXXXXXXXXX",oauth_signature_method="HMAC-SHA256",oauth_timestamp="1583629976",oauth_nonce="Br2HsCVzsaEe3KswBhtCzsSxjUDWgX56",oauth_version="1.0",oauth_signature="G7%2B5f2v2Kdx3rp%2B28DcuJRBvhi9H7fHC1mFLqJIgmMc%3D""]請(qǐng)求正文:array:4 [  "grant_type" => "client_credentials"  "client_id" => "XXXXXXXXXXXX"  "client_secret" => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"  "expires_in" => 87000]敏感細(xì)節(jié)已替換但consumer_key正確client_id,consumer_secret與client_secret無(wú)論我如何嘗試更改signUsingHmac()更改簽名的方法,它都不起作用,對(duì)我來(lái)說(shuō)一切都很好 D:有人有什么想法嗎?如果我能很好地工作,我會(huì)將它拉到包中,以使 PHP 中這個(gè) API 的身份驗(yàn)證不那么痛苦。
查看完整描述

2 回答

?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

我創(chuàng)建了一個(gè)有效的要點(diǎn)。一些建議:

  • 所有值都必須是 urlenconde()

  • 您需要用于簽名請(qǐng)求的字符串需要包括:方法(大寫(xiě))和 URL(urlcode)和參數(shù)列表(url 編碼)

  • 簽名密鑰是您的消費(fèi)者密鑰(urlencode),后跟 &。這是因?yàn)橥ǔD暮灻荑€需要我的消費(fèi)者秘密和秘密令牌。在這種情況下,我們沒(méi)有秘密令牌

對(duì)于您的簽名基本字符串的參數(shù)列表,您需要包括所有 oauth_ 參數(shù)和您的 grant_type,因?yàn)槟€需要包括 body 參數(shù)。這些鍵的排序至關(guān)重要

一些代碼PHP代碼:

$keyId = getenv('HERE_API_KEY_ID');

$keySecret = getenv('HERE_API_KEY_SECRET');


$httpBody = [

    "grant_type" => "client_credentials"

];

$httpMethod = "POST";

$httpUrl = 'https://account.api.here.com/oauth2/token';



$oauthNonce = mt_rand();

$oauthTimestamp = time();

$oauthSignatureMethod= "HMAC-SHA256";

$oauthVersion = "1.0";



$baseString = $httpMethod."&". urlencode($httpUrl);


$oauth1Param = [

    'oauth_consumer_key' => $keyId,

    'oauth_signature_method' => $oauthSignatureMethod,

    'oauth_timestamp' => $oauthTimestamp,

    'oauth_nonce' => $oauthNonce,

    'oauth_version' => $oauthVersion

];



$paramString =


        "grant_type=client_credentials&".

        "oauth_consumer_key=". urlencode($oauth1Param['oauth_consumer_key']).

        "&oauth_nonce=". urlencode($oauth1Param['oauth_nonce']).

        "&oauth_signature_method=". urlencode($oauth1Param['oauth_signature_method']).

        "&oauth_timestamp=". urlencode($oauth1Param['oauth_timestamp']).

//        "&oauth_token=".

        "&oauth_version=". urlencode($oauth1Param['oauth_version'])

;


echo $paramString.PHP_EOL;

$baseString = $baseString . "&" . urlencode($paramString);

echo $baseString . PHP_EOL;

$signingKey= urlencode($keySecret) . "&";

$signature = urlencode(

    base64_encode(

    hash_hmac(

        'sha256',

        $baseString,

        $signingKey,

        true

    )

    )

);


$oauth1Param['oauth_signature']  =  $signature;

echo "RUNTIME SIGNATURE : " . $signature .PHP_EOL;

我創(chuàng)建了一個(gè)有效的 GIST,您唯一需要更改的是 $keyId 和 $keySecret。 https://gist.github.com/roberto-butti/736c38c796ede70c719f6a21a752c971


該文檔非常有用:https ://developer.twitter.com/en/docs/basics/authentication/oauth-1-0a/creating-a-signature


查看完整回答
反對(duì) 回復(fù) 2022-10-22
?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

似乎 access_id 和 access_key 都在請(qǐng)求正文中傳遞,"grant_type" => "client_credentials"只需要在正文中,而access_id and access_key應(yīng)該在標(biāo)頭中傳遞。您可以先在郵遞員中嘗試,如果成功,請(qǐng)恢復(fù)



查看完整回答
反對(duì) 回復(fù) 2022-10-22
  • 2 回答
  • 0 關(guān)注
  • 159 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)