相关疑难解决方法(0)

Google-api-php Refresh Token返回invalid_grant

我几乎搜索了谷歌第一页的每一个结果.但似乎无法找到答案.我正在使用Google API的refresh_token并接收:

Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }
Run Code Online (Sandbox Code Playgroud)

我在做什么 首先:我正在创建并存储与google api的持久连接:

$client = new Google_Client();
$client->setClientId('xxxxxx-s73q0pa41aq3i2kcpatmpas6e6kkp99h.apps.googleusercontent.com');
$client->setClientSecret('xxxxxxxxxxxx');
$client->setRedirectUri('http://xxxxxxxx/generaterefreshtoken.php');
$client->setScopes(array('https://www.googleapis.com/auth/drive'));
$client->setAccessType('offline');


if (isset($_GET['code'])) {
  $client->authenticate();
  $_SESSION['token'] = $client->getAccessToken();
  $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
  header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}

if (isset($_SESSION['token'])) {
 $client->setAccessToken($_SESSION['token']);
}

if (isset($_REQUEST['logout'])) {
  unset($_SESSION['token']);
  $client->revokeToken();
}

if ($client->getAccessToken()) {

    $jsonarray = json_decode($client->getAccessToken());
    $arrGoogleAuth['access_token']=$jsonarray->access_token;
    $arrGoogleAuth['refresh_token']=$jsonarray->refresh_token;
    //filewrite

    $myFile = "refreshtoken.conf";
    $fh = fopen($myFile, 'w') or die("can't open file");
    fwrite($fh, $client->getAccessToken());
    fclose($fh);


    /* …
Run Code Online (Sandbox Code Playgroud)

php google-api google-api-php-client

8
推荐指数
2
解决办法
1万
查看次数

访问令牌和刷新令牌,在Python中使用Google Plus提供无效授权?

我正确地确定了离线访问并存储了它.每隔60分钟,在需要时,我会检索一个新的access_token.代码没有改变,但奇怪的是,当他第一次通过授权时.

client_id       ="xxxxx.apps.googleusercontent.com"
client_secret   ="xxxxxxxxxxxxxxxxxxxx"
refresh_token   ="xxxxxxxxxxxxxxxxxxx"
response        = oauth2a.RefreshToken(client_id,client_secret,refresh_token)

def RefreshToken(client_id, client_secret, refresh_token):
  params = {}
  params['client_id'] = client_id
  params['client_secret'] = client_secret
  params['refresh_token'] = refresh_token
  params['grant_type'] = 'refresh_token'
  request_url = AccountsUrl('o/oauth2/token')

  response = urllib.urlopen(request_url, urllib.urlencode(params)).read()
  return json.loads(response)
Run Code Online (Sandbox Code Playgroud)

答案总是{u'error':u'invalid_grant'}.我在三台不同的机器上尝试了这个,并且还得到 HTTPError:HTTP错误400:错误的请求

谢谢

python oauth google-api google-plus google-oauth

5
推荐指数
1
解决办法
1万
查看次数

Google客户端无效的JWT:令牌必须是短期令牌

我正在使用Google的php api客户端。我正在浏览服务帐户快速入门指南。据我所知,我完美地遵循了这些步骤。我遇到以下错误:

{
   "error": "invalid_grant",
   "error_description": "Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values and use a clock with skew to account for clock differences between systems."
}
Run Code Online (Sandbox Code Playgroud)

据我了解,此错误最常见的问题是系统时间是否错误。我已经三重检查了我的时区,日期和时间是否与原子钟同步。我使用php set timezone函数来设置我的时区以匹配我的计算机,但是我继续遇到错误。我正在查看消息的另一部分,其中提到了iat和exp设置,但还没有到位。

有谁对我如何超越这个有任何想法?

php google-api google-api-php-client

3
推荐指数
4
解决办法
6514
查看次数

错误:"invalid_grant",描述:"无效的JWT:令牌必须是一个短期令牌并且在合理的时间范围内",Uri:""

我试图在谷歌服务帐户的帮助下访问谷歌日历,但我得到了belloing错误

Google.Apis.dll中出现"Google.Apis.Auth.OAuth2.Responses.TokenResponseException"类型的例外,但未在用户代码中处理

我得到的错误: "invalid_grant", Description:"Invalid JWT: Token must be a short-lived token and in a reasonable timeframe", Uri:""

        string credPath = "key path";

        String serviceAccountEmail = xxxx@developer.gserviceaccount.com";

        var certificate = new X509Certificate2(credPath, "notasecret", X509KeyStorageFlags.Exportable);

        ServiceAccountCredential credential = new ServiceAccountCredential(
           new ServiceAccountCredential.Initializer(serviceAccountEmail)
           {
               Scopes = new[] {  CalendarService.Scope.CalendarReadonly,
                                CalendarService.Scope.Calendar}
           }.FromCertificate(certificate));

        // Create the service.
        var service = new CalendarService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "HRTool",
        });


        var events = service.Events.List("my calaender id").Execute();
Run Code Online (Sandbox Code Playgroud)

google-calendar-api

2
推荐指数
1
解决办法
5614
查看次数