Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >谷歌工作表访问令牌

我对访问令牌有点困惑。我已经编写了一个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

复制
相关文章
【iOS】基于Realm数据库的记账软件--Realm数据库(一)
</br> 以上,就是该项目的所有数据库表。实际项目会因业务需求,追加一些字段,但核心还是不变的。
MapleYe
2020/03/31
1.5K0
【iOS】基于Realm数据库的记账软件--Realm数据库(一)
Android数据库Realm实践
Android开发中常用的数据库有5个: 1. OrmLite OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM。支持JDBC连接,Spring以及Android平台。语法中广泛使用了注解(Annotation)。 2. SugarORM SugarORM 是 Android 平台专用ORM。提供简单易学的APIs。可以很容易的处理1对1和1对多的关系型数据,并通过3个函数save(), delete() 和 find() (或者 findById()) 来简化CRUD基本操
xiangzhihong
2018/02/02
1.5K0
Android数据库Realm实践
Innodb存储引擎中的后台线程介绍
在Innodb存储引擎中,后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。此外它会将已经修改的数据文件刷新到磁盘文件中,保证数据库在发生异常的情况下,Innodb能够恢复到正常的运行状态。上一节中我们讲到了redo log的刷盘操作,其实就是后台线程帮忙完成的。
AsiaYe
2020/02/27
1.2K0
React Native 使用Realm数据库组件
使用Realm Studio来调试查看编辑数据库里的数据,支持Mac、Windows、Linux。
forrest23
2018/08/03
1.4K0
React Native 使用Realm数据库组件
Realm数据库学习之快速入门
任何数据库都无非是CRUD的操作,也就是为了增、删、改、查的使命。 相对于传统的原生的Sqlite开发,Realm的API使开发者显得轻松自在。
Frank909
2019/01/14
6700
Realm数据库 从入门到“放弃”
Realm是由Y Combinator公司孵化出来的一款可以用于iOS(同样适用于Swift&Objective-C)和Android的跨平台移动数据库。目前最新版是Realm 2.0.2,支持的平台包括Java,Objective-C,Swift,React Native,Xamarin。
一缕殇流化隐半边冰霜
2018/08/30
5.1K0
后台线程和ui线程
后台线程 mfc AfxBeginThread创建函数或者对象中的静态函数 dotnet Task.Run或者new Thread ui线程 mfc 继承CWinThread、给子类绑定dialog,窗口在独立的线程中初始化和析构。 class CUIThread : public CWinThread { DECLARE_DYNCREATE(CUIThread) protected: CUIThread(); // 动态创建所使用的受保护的构造函数 virt
sofu456
2020/02/18
5250
iOS开发中使用Realm数据库
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/79152984
用户1451823
2018/09/13
8870
【iOS】基于Realm数据库的记账软件--前言
笔者在今年毕业的时候,为了应付学校的毕业设计,因此做了一款基于Realm数据库的记账软件。现在毕业后,稍微闲下来了,所以打算将整个项目的核心实现步骤记录下来,供大家学习学习。当然,项目中肯定还存在着大大小小的bug,例如数据的溢出等细节处理。那么先让大家看看项目的效果图吧~
MapleYe
2020/03/31
8220
【iOS】基于Realm数据库的记账软件--前言
解密openGauss数据库中的函数依赖关系
生活中总是存在着错综复杂的联系,例如喜欢打篮球的人,身高普遍比较高;喜欢穿艳丽色衣服的人,性格会普遍比较开朗;在超市买炸鸡的人,会大概率买啤酒。而反过来,这种联系并不一定成立。
叶秋学长
2023/02/01
1.2K0
解密openGauss数据库中的函数依赖关系
生活中总是存在着错综复杂的联系,例如喜欢打篮球的人,身高普遍比较高;喜欢穿艳丽色衣服的人,性格会普遍比较开朗;在超市买炸鸡的人,会大概率买啤酒。而反过来,这种联系并不一定成立。
大柏树
2022/12/13
1.2K0
解密openGauss数据库中的函数依赖关系
SqlServer 错误:"SQL Server 无法生成 FRunCM 线程" -- 解决办法
开始-》Sql server 2005-》配置工具-》SQL Server Configuration Manager-》sql协议-》禁止VIA
拓荒者IT
2019/09/26
1.2K0
前台线程和后台线程总结
.Net的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程。
wfaceboss
2019/04/08
1.9K0
shiro教程3(加密)
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容
Java帮帮
2019/12/13
7840
shiro教程3(加密)
Shiro Realm
Realm: 域,Shiro 从 Realm 中获取用户,角色,权限信息。可以把 Relam 看成 DataSource,即安全数据源。
一份执着✘
2018/08/27
8400
realm.io
java版本的github:https://github.com/realm/realm-java
阿超
2022/12/11
3460
realm.io
OAuth2 服务器Keycloak中的Realm
Realm翻译成中文为领域。用来逻辑隔离一些特定空间,有点多租户的感觉,不同的Realm之间互相隔离,有各自的特色配置,互不影响。
码农小胖哥
2021/09/09
1.8K0
【iOS】基于Realm数据库的记账软件--记账模块(二)
从记账的需求出发,该界面需要用户输入以下账单信息: (1)账单金额 (2)账单类型 (3)相关账户 (4)账单产生的日期 (5)备注 那么,结合一下需求,开始构思一下界面如何搭建吧。
MapleYe
2020/03/31
1.1K0
【iOS】基于Realm数据库的记账软件--记账模块(二)
【Android】Realm详解
介绍 Realm 是一个 MVCC (多版本并发控制)数据库,由Y Combinator公司在2014年7月发布一款支持运行在手机、平板和可穿戴设备上的嵌入式数据库,目标是取代SQLite。 Realm 本质上是一个嵌入式数据库,他并不是基于SQLite所构建的。它拥有自己的数据库存储引擎,可以高效且快速地完成数据库的构建操作。和SQLite不同,它允许你在持久层直接和数据对象工作。在它之上是一个函数式风格的查询api,众多的努力让它比传统的SQLite 操作更快 。 详细介绍(如果进不去,看这个也行)
Gavin-ZYX
2018/05/18
4.5K0
点击加载更多

相似问题

Realm -在后台线程上批量更新RLMResults

124

Realm DB -如何在Android中解密Realm DB?

14

Realm在后台获取错误的数据

10

无法命名后台线程,无效错误

23

如何将realm对象从后台线程传递到UiThread?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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