首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >谷歌工作表访问令牌

谷歌工作表访问令牌
EN

Stack Overflow用户
提问于 2017-03-23 02:27:54
回答 1查看 2.3K关注 0票数 1

我对访问令牌有点困惑。我已经编写了一个PHP脚本,它插入了我从POST请求中获得的数据,我已经授权了App,它确实在工作表的末尾添加了行。

我的问题是,当令牌在服务器上实现时,如何刷新它,因为它将添加POST数据。

这是密码

代码语言:javascript
运行
AI代码解释
复制
<?php

// Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';

session_start();

$client = new Google_Client();
    $client->setAuthConfigFile(__DIR__ . '/client_secrets.json');  
    $client->addScope(Google_Service_Sheets::SPREADSHEETS);

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {

  $client->setAccessToken($_SESSION['access_token']);
$lead = array (
"first_name" => $_POST['name'],
"email" => $_POST['email']
);

$sid = "sheet id on which the row is added";

addRowToSpreadsheet($lead, $client , $sid);

} else {
  $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/fb/oauth2callback.php';
  header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}






function addRowToSpreadsheet($ary_values = array(), $client , $sid) {

    $sheet_service = new Google_Service_Sheets($client);

    $fileId = $sid;

    $values = array();
    foreach( $ary_values AS $d ) {
        $cellData = new Google_Service_Sheets_CellData();
        $value = new Google_Service_Sheets_ExtendedValue();
        $value->setStringValue($d);
        $cellData->setUserEnteredValue($value);
        $values[] = $cellData;
    }
    // Build the RowData
    $rowData = new Google_Service_Sheets_RowData();
    $rowData->setValues($values);
    // Prepare the request
    $append_request = new Google_Service_Sheets_AppendCellsRequest();
    $append_request->setSheetId(0);
    $append_request->setRows($rowData);
    $append_request->setFields('userEnteredValue');
    // Set the request
    $request = new Google_Service_Sheets_Request();
    $request->setAppendCells($append_request);
    // Add the request to the requests array
    $requests = array();
    $requests[] = $request;
    // Prepare the update
    $batchUpdateRequest = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
        'requests' => $requests
    ));

    try {
        // Execute the request
        $response = $sheet_service->spreadsheets->batchUpdate($fileId, $batchUpdateRequest);
        if( $response->valid() ) {
            // Success, the row has been added
            return true;
        }
    } catch (Exception $e) {
        // Something went wrong
        error_log($e->getMessage());
    }

    return false;
}
?>

我尝试在服务器上托管应用程序,它没有在工作表中添加新行,我认为由于访问令牌,这是一个问题

请帮帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-23 08:48:32

实际上有一个工作表API的PHP Quickstart,它包括如何刷新令牌。这里有一个片段:

代码语言:javascript
运行
AI代码解释
复制
 // Refresh the token if it's expired.
  if ($client->isAccessTokenExpired()) {
    $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
    file_put_contents($credentialsPath, json_encode($client->getAccessToken()));
  }

还有一个关于刷新令牌的刷新访问令牌(脱机访问)指南

访问令牌定期过期。如果请求脱机访问与令牌关联的作用域,则可以刷新访问令牌,而无需提示用户获得权限(包括用户不在场时)。 如果使用Google客户端库,客户端对象将根据需要刷新访问令牌,只要将该对象配置为脱机访问即可。如果不使用客户端库,则在将用户重定向到谷歌的access_type 2.0服务器时,需要将OAuth HTTP查询参数设置为脱机。在这种情况下,当您将授权代码交换为访问令牌时,Google的授权服务器将返回一个刷新令牌。然后,如果访问令牌过期(或在任何其他时间),则可以使用刷新令牌来获得新的访问令牌。 如果应用程序需要对Google API的脱机访问,请将API客户端的访问类型设置为脱机: $client->setAccessType(“脱机”);

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42973382

复制
相关文章
php使用Symfony EventDispatcher 组件
大家好,这篇文章将通过我在实际开发工作中的例子,来介绍Symfony的EventDispatcher组件的使用及实现原理。
OwenZhang
2021/12/08
2.1K0
数据实时反馈技术
其实不知道怎么起这个标题,这是一个这样的场景,在开发后台管理系统,尤其是实时监控系统的时候,往往需要展示数据的不断更新变化。常用的技术就是轮询,或者使用websocket进行长连接实时通讯。我们知道webpack在调试模式的时候有个热更新功能,它是通过服务器数据推送功能实现的。就是所谓的Server-Sent Events(SSE).
我不是码神
2022/07/28
1.1K0
数据实时反馈技术
Yahoo 书签系统使用 Php 语言的 symfony 框架
根据Yahoo 技术工程师 Michael Salisbury  介绍,Yahoo 书签使用 symfony 框架开发完成,他们选择 symfony 的理由如下:
田春峰-JCJC错别字检测
2019/02/14
1K0
nginx配置Symfony
server { listen 80; server_name blog.phpfs.com; root /data/web; rewrite ^/a
苦咖啡
2018/04/28
1.7K0
Symfony是什么
众所周知前面有说到PHP的七大框架,接下来就来说说Symfony框架,希望说的对大家有所帮助。
叫我可儿呀
2019/11/26
2.2K0
Symfony是什么
Aerospike在实时竞价广告中的应用
首先要介绍的是,什么是实时竞价广告?如图11-9所示 图11-9 实时竞价广告模式 与广告业务相关的术语 首先介绍几个与广告业务相关的术语: RTB(RealTime Bidding)实时竞价:一种利用第三方技术在数以百万计的网站上针对每一个用户展示行为进行评估以及出价的竞价技术。与大量购买投放频次不同,实时竞价规避了无效的受众到达,针对有意义的用户进行购买。它的核心是DSP平台(需求方平台),RTB对于媒体来说,可以带来更多的广告销量、实现销售过程自动化及减低各项费用的支出。而对于广告商和代理公司来说
企鹅号小编
2018/01/22
1.7K0
Aerospike在实时竞价广告中的应用
Flink在实时在实时计算平台和实时数仓中的企业级应用小结
在过去的这几年时间里,以 Storm、Spark、Flink 为代表的实时计算技术接踵而至。2019 年阿里巴巴内部 Flink 正式开源。整个实时计算领域风起云涌,一些普通的开发者因为业务需要或者个人兴趣开始接触Flink。
王知无-import_bigdata
2021/04/21
1.5K0
Flink在实时在实时计算平台和实时数仓中的企业级应用小结
goto语法在PHP中的使用
在C++、Java及很多语言中,都存在着一个神奇的语法,就是goto。顾名思义,它的使用是直接去到某个地方。从来代码的角度来说,也就是直接跳转到指定的地方。我们的PHP中也有这个功能,我们先来看看它是如何使用的:
硬核项目经理
2020/01/02
2.8K0
谈谈JSONAPI在PHP中的应用
现在服务端程序员的主要工作已经不再是套模版,而是编写基于 JSON 的 API 接口。可惜大家编写接口的风格往往迥异,这就给系统集成带来了很多不必要的沟通成本,如果你有类似的困扰,那么不妨关注一下 JSONAPI,它是一个基于 JSON 构建 API 的规范标准,一个简单的 API 接口大致如下所示:
LA0WAN9
2021/12/14
9580
谈谈JSONAPI在PHP中的应用
trait能力在PHP中的使用
相信大家对trait已经不陌生了,早在5.4时,trait就已经出现在了PHP的新特性中。当然,本身trait也是特性的意思,但这个特性的主要能力就是为了代码的复用。
硬核项目经理
2020/03/12
2.1K0
在 Linux 中实时监控日志文件
当你在你的 Linux 桌面、服务器或任何应用中遇到问题时,你会首先查看各自的日志文件。日志文件通常是来自应用的文本和信息流,上面有一个时间戳。它可以帮助你缩小具体的实例,并帮助你找到任何问题的原因。它也可以帮助从网络上获得援助。
用户9042463
2021/09/26
2.7K0
Symfony 服务容器入门
本文是依赖注入(Depeendency Injection)系列教程的第 3 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
3.4K0
1024中的各种AI含义反馈
总的来说,1024 作为计算机科学中的一个重要数字,代表了计算机存储和网络通信等方面的基本单位,在计算机科学中具有广泛的应用和重要的意义。
红目香薰
2023/10/23
2830
实时检测神经振荡可实现行为相关的神经反馈
Real-time detection of neural oscillation bursts allows behaviourally relevant neurofeedback
脑机接口社区
2020/07/01
4360
Symfony 3 框架+Elasticsearch
目录src/AppBundle/Controller/SearchController.php
Stanley Sun
2019/09/23
8080
在UWP应用中调用Windows 10 Feedback Hub发送用户反馈
我们的应用上架后,有非常多的途径可以让用户发送反馈,比如留下邮箱、商店评论,甚至自己写个API来收集反馈。但其实,Windows 10的Feedback Hub也是可以为我们所用的。
Edi Wang
2019/07/08
2.3K0
在UWP应用中调用Windows 10 Feedback Hub发送用户反馈
Redis 在PHP中的使用笔记
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/79403675
泥豆芽儿 MT
2018/09/11
1.1K0
Redis 在PHP中的使用笔记
PHP弱类型在CTF中的应用
PHP作为世界上最好的语言(然而人生苦短,我用python),在CTF web题中大放异彩,深受出题人的喜爱。P神在对web题出题套路总结的第三条指出,出题人喜欢花式玩弄php的特性,包括弱类型、反序列化、\0截断、iconv截断。那么今天我们就php弱类型这一特性,总结一下相关出题的套路。 在Bugku WEB Write Up(二)《矛盾》这题中我们已经初步领略了PHP弱类型的魅力 也明白了为什么“test”会等于0 这里再举几个例子,加深一下理解 “1test”与1相比较时,会先将“1test”转
企鹅号小编
2018/02/28
4.2K0
PHP弱类型在CTF中的应用
在PHP中,cookie和session的使用
cookie简介 Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。一般情况下,Cookie通过HTTP headers从服务端返回到客户端。多数web程序都支持Cookie的操作,因为Cookie是存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置,类似于header函数的使用限制。 PHP工作原理:PHP通过setcookie函数进行Cookie的设置,任何从浏览器发回的Cookie,PHP都会自动的将他存储在$_COOKIE的全局变量之中,因此我们可以通
思梦php
2018/03/09
4.3K0
在PHP中,cookie和session的使用
[MongoDB] 使用PHP在MongoDB中搜索的实现
条件操作符用于比较两个表达式并从mongoDB集合中获取数据。 MongoDB中条件操作符有: (>) 大于 - $gt (<) 小于 - $lt (>=) 大于等于 - $gte (<= ) 小于等于 - $lte MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式,使用PCRE (Perl Compatible Regular Expression) 作为正则表达式语言。 MongoDB OR 条件语句使用了关键字 $or
唯一Chat
2020/02/25
5.5K0

相似问题

Java9 HttpClient SSLHandshakeException

11

在HttpClient中模拟F#时参数计数失配异常

18

使用httpclient时系统异常

22

StringConcatFactory -Java9中的异常

30

带有sendAsyncMulti / multiResponseAsync的Java9 HttpClient

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档