R 在部署到shinyapps.io的应用程序上对googlesheets进行多用户身份验证

R 在部署到shinyapps.io的应用程序上对googlesheets进行多用户身份验证,r,google-sheets-api,shinyapps,googlesheets4,tidyverse-api,R,Google Sheets Api,Shinyapps,Googlesheets4,Tidyverse Api,我有一个互动的闪亮的应用程序,它想读和写到用户自己的谷歌驱动器帐户。它正在使用gs4\u create,gs4\u find和range\u read从软件包googlesheets4和googledrive中读取 当在本地运行时,我会在第一次使用这些包时通过控制台依次得到如下提示: googledrive软件包正在请求访问您的Google帐户。选择预先授权的帐户或输入“0”以获取新令牌。按Esc/Ctrl+C组合键中止 1:notmyemail@gmail.com 我可以选择我的gmail帐户

我有一个互动的闪亮的应用程序,它想读和写到用户自己的谷歌驱动器帐户。它正在使用
gs4\u create
gs4\u find
range\u read
从软件包
googlesheets4
googledrive
中读取

当在本地运行时,我会在第一次使用这些包时通过控制台依次得到如下提示:

googledrive软件包正在请求访问您的Google帐户。选择预先授权的帐户或输入“0”以获取新令牌。按Esc/Ctrl+C组合键中止

1:notmyemail@gmail.com

我可以选择我的gmail帐户,或者输入0打开“选择帐户” 继续在浏览器中Tidyverse API Packages“GUI。这两种方法都可以(OAuth)对用户进行身份验证,并且函数工作正常

当我将应用程序部署到shinyapps.io时,它会在首次使用这些功能时抛出一个错误,甚至不会请求凭据:

值[3L]中出错:无法获取Google凭据。你在跑步吗 googledrive在非交互式会话中?考虑:
drive\u deauth()
以防止尝试获取凭据<代码>调用驱动器\u auth() 直接提供所有必要的细节。请阅读以下内容:

显然,我并不是在部署的应用程序上寻找控制台请求,但我认为我需要的是触发Tidyverse API GUI(我假设这是预期的行为),并允许用户验证他们的帐户

请注意,(i)此应用程序是交互式的,(ii)用户试图访问他们自己的谷歌硬盘上的私人文件,而不是公共或公共文件。出于这两个原因,我不能只提供一个代币

drive\u auth\u config
的文档说明我可以设置自己的OAuth应用程序进行身份验证,但这是必要的吗


有什么想法吗?谢谢。

您的应用程序需要凭据才能访问启用的API作用域。此外,使用你的应用程序的用户在同意你的应用程序代表他们访问API之前,首先需要经过身份验证。这意味着您的应用程序应该有一个同意屏幕,向用户显示它请求许可的API范围

如果未正确设置,包括重定向URL(如果应用程序部署在Web服务器上),则重定向不应为localhost

因此,正确设置项目的同意屏幕并为其使用正确的凭据非常重要

我建议您通读以下文档,以便更好地了解如何为应用程序设置身份验证

参考文献:


您的应用程序需要凭据才能访问启用的API作用域。此外,使用你的应用程序的用户在同意你的应用程序代表他们访问API之前,首先需要经过身份验证。这意味着您的应用程序应该有一个同意屏幕,向用户显示它请求许可的API范围

如果未正确设置,包括重定向URL(如果应用程序部署在Web服务器上),则重定向不应为localhost

因此,正确设置项目的同意屏幕并为其使用正确的凭据非常重要

我建议您通读以下文档,以便更好地了解如何为应用程序设置身份验证

参考文献:


我在github上询问,Google Sheets4软件包的开发人员回答说,shiny中的多用户身份验证尚未实现。这里正在跟踪这个问题:

我在github上查询,
googlesheets4
包的开发人员回答说,shiny中的多用户身份验证尚未实现。这里正在跟踪这个问题:

我已经在谷歌云平台上设置了自己的OAuth 2.0客户端,并使用
drive\u auth\u config
将应用程序定向到此位置。从本地机器上,我可以通过客户端而不是使用Tidyverse客户端进行身份验证。但是,当它重定向时,尽管有正确的url(http:\\localhost:1221),它仍会在新选项卡中打开应用程序的无响应版本。当部署到shinyapps时,它会像以前一样崩溃,并出现相同的日志错误。凭据中的redirect_URI参数应匹配或包含用户应重定向到的URI。但是在shinyapps.io上,我没有达到重定向的程度。我需要一个同意屏幕来触发。好的,看起来你在谷歌端已经正确设置好了。所以你的问题一定是关于shinyapps.io配置。我已经在谷歌云平台上设置了自己的OAuth 2.0客户端,并使用
drive\u auth\u config
将应用程序定向到此位置。从本地机器上,我可以通过客户端而不是使用Tidyverse客户端进行身份验证。但是,当它重定向时,尽管有正确的url(http:\\localhost:1221),它仍会在新选项卡中打开应用程序的无响应版本。当部署到shinyapps时,它会像以前一样崩溃,并出现相同的日志错误。凭据中的redirect_URI参数应匹配或包含用户应重定向到的URI。但是在shinyapps.io上,我没有达到重定向的程度。我需要一个同意屏幕来触发。好的,看起来你在谷歌端已经正确设置好了。因此,您的问题必须在shinyapps.io配置上。