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

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

如何使用GoogleAPI客戶端刷新令牌?

如何使用GoogleAPI客戶端刷新令牌?

忽然笑 2019-07-22 19:47:38
如何使用GoogleAPI客戶端刷新令牌?我一直在玩GoogleAnalyticsAPI(V3),并且遇到了一些錯(cuò)誤。首先,所有的設(shè)置都是正確的,并與我的測(cè)試帳戶一起工作。但是當(dāng)我想從另一個(gè)配置文件ID(相同的Googleaccont/GA帳戶)獲取數(shù)據(jù)時(shí),我會(huì)得到一個(gè)403錯(cuò)誤。奇怪的是,來(lái)自某些GA帳戶的數(shù)據(jù)將返回?cái)?shù)據(jù),而其他帳戶將生成此錯(cuò)誤。我已經(jīng)撤銷了令牌并再次進(jìn)行了身份驗(yàn)證,現(xiàn)在我似乎可以從我的所有帳戶中獲取數(shù)據(jù)。問(wèn)題解決了?不。由于訪問(wèn)密鑰將過(guò)期,我將再次遇到相同的問(wèn)題。如果我對(duì)事情的理解是正確的,人們可以使用新的Token獲得一個(gè)新的身份驗(yàn)證Tooken。問(wèn)題是,當(dāng)我跑:$client->refreshToken(refresh_token_key) 返回以下錯(cuò)誤:Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }'我檢查了刷新方法背后的代碼,并將請(qǐng)求跟蹤到“apoAuth2.php”文件中。所有參數(shù)都正確發(fā)送。Grant_type在方法中被硬編碼為“REFRESH_TOKEN”,所以我很難理解出了什么問(wèn)題。參數(shù)數(shù)組如下所示:Array ( [client_id] => *******-uqgau8uo1l96bd09eurdub26c9ftr2io.apps.googleusercontent.com [client_secret] => ******** [refresh_token] => 1\/lov250YQTMCC9LRQbE6yMv-FiX_Offo79UXimV8kvwY [grant_type] => refresh_token )程序如下。$client = new apiClient();$client->setClientId($config['oauth2_client_id']);$client->setClientSecret($config['oauth2_client_secret']);$client->setRedirectUri($config['oauth2_redirect_uri']);$client->setScopes('https://www.googleapis.com/auth/analytics.readonly');$client->setState('offline');$client->setAccessToken($config['token']); // The access JSON object.$client->refreshToken($config['refreshToken']); // Will return error here這是一個(gè)錯(cuò)誤,還是我完全誤解了什么?
查看完整描述

3 回答

?
九州編程

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

所以我終于想出了怎么做?;舅枷胧牵鷵碛械谝淮握?qǐng)求身份驗(yàn)證時(shí)得到的令牌。第一個(gè)令牌具有刷新令牌。第一個(gè)原始令牌在一個(gè)小時(shí)后過(guò)期。一個(gè)小時(shí)后,您必須使用來(lái)自第一個(gè)令牌的刷新令牌來(lái)獲得一個(gè)新的可用令牌。你用$client->refreshToken($refreshToken)檢索新令牌。我稱之為“臨時(shí)令牌”。您還需要存儲(chǔ)這個(gè)臨時(shí)令牌,因?yàn)橐粋€(gè)小時(shí)后它也過(guò)期了,并注意到它沒(méi)有與它相關(guān)的刷新令牌。為了獲得一個(gè)新的臨時(shí)令牌,您需要使用之前使用的方法,并使用第一個(gè)令牌的刷新令牌。我在下面附加了一些代碼,很難看,但我在這方面是新的.

//pull token from database$tokenquery="SELECT * FROM token WHERE type='original'";$tokenresult = mysqli_query($cxn,$tokenquery);if($tokenresult!=0){
    $tokenrow=mysqli_fetch_array($tokenresult);
    extract($tokenrow);}$time_created = json_decode($token)->created;$t=time();$timediff=$t-$time_created;echo $timediff."<br>";$refreshToken= json_decode($token)->refresh_token;//start google client note:$client = new Google_Client();$client->setApplicationName('');$client->setScopes(array());$client->setClientId('');$client->setClientSecret('');$client->setRedirectUri('');$client->setAccessType('offline');$client->setDeveloperKey('');//resets token if expiredif(($timediff>3600)&&($token!='')){
    echo $refreshToken."</br>";
    $refreshquery="SELECT * FROM token WHERE type='refresh'";
    $refreshresult = mysqli_query($cxn,$refreshquery);
    //if a refresh token is in there...
    if($refreshresult!=0)
    {
        $refreshrow=mysqli_fetch_array($refreshresult);
        extract($refreshrow);
        $refresh_created = json_decode($token)->created;
        $refreshtimediff=$t-$refresh_created;
        echo "Refresh Time Diff: ".$refreshtimediff."</br>";
        //if refresh token is expired
        if($refreshtimediff>3600)
        {
            $client->refreshToken($refreshToken);
        $newtoken=$client->getAccessToken();
        echo $newtoken."</br>";
        $tokenupdate="UPDATE token SET token='$newtoken' WHERE type='refresh'";
        mysqli_query($cxn,$tokenupdate);
        $token=$newtoken;
        echo "refreshed again";
        }
        //if the refresh token hasn't expired, set token as the refresh token
        else
        {
        $client->setAccessToken($token);
           echo "use refreshed token but not time yet";
        }
    }
    //if a refresh token isn't in there...
    else
    {
        $client->refreshToken($refreshToken);
        $newtoken=$client->getAccessToken();
        echo $newtoken."</br>";
        $tokenupdate="INSERT INTO token (type,token) VALUES ('refresh','$newtoken')";
        mysqli_query($cxn,$tokenupdate);
        $token=$newtoken;
        echo "refreshed for first time";
    }      }//if token is still good.if(($timediff<3600)&&($token!='')){
    $client->setAccessToken($token);}$service = new Google_DfareportingService($client);


查看完整回答
反對(duì) 回復(fù) 2019-07-22
?
縹緲止盈

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

下面是要設(shè)置令牌的代碼段,請(qǐng)確保訪問(wèn)類型設(shè)置為離線

if (isset($_GET['code'])) {
  $client->authenticate();
  $_SESSION['access_token'] = $client->getAccessToken();}

刷新令牌

$google_token= json_decode($_SESSION['access_token']);$client->refreshToken($google_token->refresh_token);

這將刷新您的令牌,您必須在會(huì)話中更新它,您可以這樣做。

 $_SESSION['access_token']= $client->getAccessToken()


查看完整回答
反對(duì) 回復(fù) 2019-07-22
  • 3 回答
  • 0 關(guān)注
  • 1122 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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