列出Google云端硬盘文件的JavaScript示例使用gapi.client.drive.files.list().当尝试使用此方法时,我收到错误"无法读取未定义的属性'文件'".
Google Drive API javascript中已经介绍了此问题和解决方法
https://developers.google.com/drive/v2/reference/files/list#try-it下的文档是否有误?或者有没有办法使用API描述.
我一直在试图弄清楚如何从Internet Explorer中的Drive下载文件.似乎跨域安全问题阻止了这一点.
使用XMLHttpRequest的简单"GET"在Chrome和Firefox中运行良好,因为它支持请求标头,允许浏览器请求CORS响应,如以下代码行所示:
var xhr = new XMLHttpRequest();
xhr.open('GET', file.downloadUrl);
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xhr.onload = function() {
callback(xhr.responseText);
};
xhr.send();
Run Code Online (Sandbox Code Playgroud)
据称出于安全原因,IE不支持请求标头.由于无法在这个不幸的流行浏览器中下载内容,我完全陷入困境.
我的问题是 - 世界上这些其他应用程序如何解决这个问题?他们是否使用某种服务器端代理,并通过自己的后端汇集所有驱动器请求?在这一点上,这似乎相当艰巨.或者,有没有办法在启动时访问驱动器文件,我不知道?
我已经看到一些解决方案需要两台服务器上的文件,据我所知,这不是一个选项.Google云端硬盘是否能够在没有请求标头的情况下使用CORS进行响应,或者是否有其他我不知道的API支持从Drive域中的iframe进行某种回调?
在这一点上,我几乎死在水里.任何提示将非常感谢.很抱歉不得不问任何与MS产品有关的问题.
几个星期前,我们开始注意到谷歌客户端API或谷歌驱动JS api的奇怪错误(不确定哪个,URL参考在下面),他们在过去几天的频率增加
TypeError: Cannot read property 'sl' of undefined
Run Code Online (Sandbox Code Playgroud)
这似乎主要影响Windows Chrome - 我们的错误日志中的用户代理的典型示例是
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31)
Run Code Online (Sandbox Code Playgroud)
从我所看到的,唯一的.sl行是这样的:
if(!this.b.headers.Authorization){var f=(0,_.Hx)(_.p,_.p);f&&f[_.Ak.pl.sl]&&(c=f[_.Ak.pl.sl].split(/\w+/))}
Run Code Online (Sandbox Code Playgroud)
这来自
https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.uSTvEdNXb7o.O/m=client/rt=j/sv=1/d=1/ed=1/am=UQ/rs=AItRSTOm1KS5pZVEepZkn9qQJeuQZC_Qjw/cb=gapi.loaded_0
Run Code Online (Sandbox Code Playgroud)
我知道这是故意隐晦的,所以建议如何解决这个问题超出了我的意见,但如果有人在调查频率似乎在增加,我会很感激.也许是围绕_Ak.pl的一个守卫,在执行.sl之前检查它是否为空?
google-api google-api-client google-drive-api google-api-js-client
从2周前开始,一些客户已经开始遇到阻止他们使用Google服务进行身份验证的问题.到目前为止,我遇到的所有实例似乎都在非gmail域上.问题似乎是(请参阅下面的差异部分)来自gapi.auth.authorize 的https://accounts.google.com/o/oauth2/auth请求正在返回带有'X-Frame-Options:SAMEORIGIN'的响应这些特定客户的标题.我无法在本地重现此问题,但是给出了失败请求的HAR.
这种相同的身份验证方法适用于各种其他客户端,包括其他托管域(非@gmail帐户).
有关可能导致此请求失败的原因的任何想法?还有待调查的内容或其他信息?
在开发人员控制台中,https://www.moo.do是一个有效的Javascript Origin.
最终用户控制台中显示的错误:X-Frame-Options拒绝加载:https://accounts.google.com/o/oauth2/auth?不允许跨源框架.
相似
差异
以下是成功和失败的请求.我很遗憾为什么失败的请求返回额外的标头.部分信息已被删除([删除])或编辑(XXXX/YYYY).
成功的要求
{
"startedDateTime": "2016-03-03T15:52:27.625Z",
"time": 84.7660000436008,
"request": {
"method": "GET",
"url": "https://accounts.google.com/o/oauth2/auth?client_id=597847337936.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.install%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.appdata%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcontacts.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&immediate=true&login_hint=YYYYY%40YYYY.com&authuser=-1&include_granted_scopes=true&proxy=oauth2relay593501023&redirect_uri=postmessage&origin=https%3A%2F%2Fwww.moo.do&response_type=token&state=867674703%7C0.1520984533&jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.d1w1l2mcNcs.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Frs%3DAGLTcCMuer-UxvQzEv7JYzkFSQh2Kou7xA",
"httpVersion": "unknown",
"headers": [
{
"name": "pragma",
"value": "no-cache"
},
{
"name": "accept-encoding",
"value": "gzip, deflate, sdch"
},
{
"name": "accept-language",
"value": "en-US,en;q=0.8"
},
{
"name": "upgrade-insecure-requests",
"value": "1"
},
{
"name": "user-agent",
"value": "Mozilla/5.0 (Macintosh; Intel Mac …Run Code Online (Sandbox Code Playgroud) javascript google-drive-api google-oauth google-api-js-client google-drive-realtime-api
我有一个 Chrome Manifest v2 扩展程序,可以通过 Google API 与 Google Sheets 进行交互。相关代码:
清单.json
"content_security_policy": "script-src 'self' https://apis.google.com/; object-src 'self'",
Run Code Online (Sandbox Code Playgroud)
背景.html
<script src="https://apis.google.com/js/client.js?onload=onGAPILoad"></script>
Run Code Online (Sandbox Code Playgroud)
Manifest v3 禁止远程托管脚本(请参阅此处和此处),那么你们是如何绕过此限制的呢?
更新:我已经提交了一张票,至少让 Chromium 团队意识到 MV3 中这一新安全限制所带来的影响:
https://bugs.chromium.org/p/chromium/issues/detail?id=1164452
如果您的扩展程序遇到同样的问题,请前往那里对此票进行投票。我们希望在 Manifest v2 被弃用之前找到一个可行的解决方案。
如何让 Firebase Auth 与 Google Drive api 配合使用?
使用 React,我的 firebase auth 工作和 googledrive(gapi)都可以单独工作,但正在努力将两者合并。
借助 Firebase 9,访问 Google API 变得更加容易:This gives you a Google Access Token. You can use it to access Google APIs.
我的想法是获取令牌,然后将其传递给gapi.init函数。然而,我不知道之后该去哪里。任何正确方向的指导将不胜感激!
import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth";
onst auth = getAuth();
signInWithPopup(auth, provider)
.then((result) => {
// This gives you a Google Access Token. You can use it to access the Google API.
const credential = GoogleAuthProvider.credentialFromResult(result);
const token = credential.accessToken; …Run Code Online (Sandbox Code Playgroud) 我正在使用新的谷歌登录按钮和一键登录角度。目前,我正在使用库@abacritt/angularx-social-login。我尝试直接使用该/gsi/client脚本,这个也只给出了相同的结果。附上图像以供参考。
我尝试禁用我的应用程序上的所有样式。但一切都没有改变。当我直接检查按钮/弹出窗口并将一些颜色应用于动态生成的 iframe 的主体时,颜色正在发生变化。没有其他颜色受到影响。
下面是我根据库文档设置的 html。
<asl-google-signin-button GoogleSigninButtonDirective type='standard' size="large" width="320"
theme="filled_blue">
</asl-google-signin-button>
Run Code Online (Sandbox Code Playgroud)
下面是应用程序模块。
{
provide: 'SocialAuthServiceConfig',
useValue: {
autoLogin: false,
providers: [
{
id: GoogleLoginProvider.PROVIDER_ID,
provider: new GoogleLoginProvider(
'clientId_here',
),
}
],
onError: (err) => {
console.error(err);
},
} as SocialAuthServiceConfig,
}
Run Code Online (Sandbox Code Playgroud)
这个问题似乎与这个特定的包无关,因为我尝试不使用任何包并给出相同的结果。
npm google-api-js-client google-signin angular angular-social-login
在 Google 云存储中托管的网页中,我想显示修订历史记录,这需要列出该对象的所有版本。
使用?versions参数向存储桶发送 GET 请求会返回所有对象的版本列表。有没有办法列出单个对象的所有版本,如在gsutil ls -lajavascript 中?
需要在js中发出auth请求,但浏览器不支持弹出窗口.有没有办法重定向到新的URL或在应用程序的html5页面中显示请求
使用 Google 身份服务 (GSI) 时,我可以显示一个弹出窗口,要求用户连接他们的 Google 帐户。这是有很好的文档记录的,并且它与以下代码配合得很好:
const client = window.google.accounts.oauth2.initCodeClient({
client_id: 'CLIENT_ID',
scope: 'SCOPE',
ux_mode: 'popup',
callback: async (response) => {
console.log('Response Google', response);
},
});
client.requestCode();
Run Code Online (Sandbox Code Playgroud)
但是,如果用户关闭弹出窗口,我希望执行一些操作。我在在线文档和示例中找不到任何内容。我尝试了intermediate_iframe_close_callback和native_callback,但关闭弹出窗口时都没有被调用。
那么,有可能吗?我该怎么做 ?
谢谢
javascript ×4
google-api ×2
google-oauth ×2
angular ×1
cors ×1
firebase ×1
npm ×1
oauth-2.0 ×1
reactjs ×1