字幕组成品列表(Beta)
  • 写在前面
  • Android 平台
    • Game On! 游戏开发系列 - 031
      • Pie Noon - 1503060393
      • The Death of Base Game Activity - 1504030543
      • Surviving OpenGL Context Loss - 1504030546
      • WebP for Game Devs - 1504030547
      • Saved Games In-Depth (Part 1) - 1504070556
      • Saved Games In-Depth (Part 2) - 1504030548
      • Smaller Flipbook Textures with CRABBY - 1504030544
      • Google Tag Manager - 1504030545
      • Flatbuffers - 1505050794
      • Achievement Point Pointers - 1505050796
      • Frequency Scaling - 1505050797
      • Meet the Management APIs - 1501140367
      • Y U Ship Broken Games - 1505050795
    • Android 性能优化 - 088
      • Garbage Collection in Android - 1503170425
      • Performance Cost of Memory Leaks - 1503170424
      • Rendering Performance 101 - 1501130351
      • Understanding Overdraw - 1501130352
      • Understanding VSYNC - 1501130353
      • Tool - Profile GPU Rendering - 1501130354
      • Why 60fps? - 1501130355
      • Android UI and the GPU - 1501130356
      • Invalidations, Layouts, and Performance - 1501130357
      • Overdraw, Cliprect, QuickReject - 1501130358
      • Tool - Memory Monitor - 1501130363
      • Battery Performance 101 - 1501130364
      • Understanding Battery Drain on Android - 1501130365
      • Battery Drain and WakeLocks - 1501130366
      • Memory Performance 101 - 1504170661
    • I/O 2014 Android 开发专题 - 089
      • Activity Transitions - 1504020505
      • Building Apps For Android TV - 1504020520
      • Building great Android media experiences - 1504020510
      • Building a quality app from start to finish - 1504020515
      • App Indexing API - 1504020507
      • What's new in WebView - 1504010484
      • Bluetooth Low Energy - 1504010486
      • Building impressive Android media experiences - 1504010493
      • The next Generation of Authentication - 1504020497
      • Don't Alpha That Pixel! - 1504020523
      • NFC + HCE Your phone in an interactive world - 1504020509
      • Demystifying encodes and decodes of WebM - 1504020521
      • Google Cloud Messaging - 1504020524
      • Getting your Game on the Big Screen - 1504020518
      • I hear you like realtime memes - 1504020511
      • Offerize your App - 1504020506
      • Using the Android Job Scheduler - 1504020504
      • From Holo to Material - 1504020526
      • Under the Hood of Android Auto - 1504020501
      • Isolation for Android App Developers - 1504020498
      • Android Work - 1504010496
      • ExoPlayer: Adaptive video streaming on Android - 1504010489
      • Sample rates and resampling: Why can't we all just agree? - 1504010488
      • Drive Android API - 1504010485
    • Android Studio - 004
      • Layout Editor (Ep 3, Android Studio) - 1503290479
      • Introducing Gradle (Ep 2, Android Studio) - 1503170426
    • I/O 2014 Android 分发主题 - 091
      • Introduction to Google Play - 1504030534
      • Google Play: building your user community - 1504030535
      • Optimizing Apps for Education - 1504030536
      • Succeeding in Education Technology - 1504030530
      • Subscriptions Made Easy with Google Play - 1504030531
      • The world is your playground - go global with Google - 1504030533
      • Maximizing discoverability on Google Play - 1504030538
    • Android Auto - 003
      • Introduction to Android Auto - 1504130615
      • Android Auto Messaging - 1504130617
      • Android Auto Audio - 1504130616
    • Android Wear - 006
      • Designing for Android Wear - 1503210448
      • How We Customized Google Apps for Android Wear - 1503210450
      • Fullscreen apps for Android Wear - 1503210445
      • New Notification Features for Android Wear - 1503210446
      • Building Cloud-powered wearable Apps - 1503210449
      • An Introduction to Android Wear - 1503190435
      • Google I/O 2014 - Android Wear: The developer's perspective - 1503210442
      • Devoxx 2014 Interviews: Android Wear - 1503210440
      • DevBytes: Watch Faces for Android Wear - 1503210439
    • Android TV - 005
      • Using the Leanback library - 1504080588
      • Beach Buggy Racing Multiplayer with Nearby Connections (Play Services) - 1503060387
    • Android for Work - 106
      • Android for Work for Developers - 1503060390
      • App Configurations, Testing and Launchers - 1504110590
    • IO Bytes 2014 - Android - 066
      • Chrome Apps on Android and iOS - 1501080014
      • Perf Primer CPU, GPU and your Android game - 1501080017
  • Chrome 平台
    • IO Bytes 2014 - Chrome and Web - 067
      • Using the PageSpeed API - 1505070815
      • Fabulous Forms for the multi-device web - 1505070816
      • Testing multi-screen web pages - 1505070817
      • Responsive images today - 1505070819
      • Web Performance Testing at YouTube - 1505070828
      • Building sites for the multi-device web - 1505070820
      • Deep dive: Google Cloud Messaging for Chrome - 1505070827
  • Google 创业者资源
    • Coffee with a Googler - 012
      • Chat with Allen Huang of AndroidTV - 1503040384
      • Chat with Fred Chung about developer advocacy - 1503070395
      • Google Fit platform with Michelle Haq - 1503210443
      • Android Auto Product Manager Andrew Brenner - 1501120027
      • Chat with Francis Ma about Google Play services - 1501120028
    • Root Access For Startups - 077
      • What we learned building plug-ins for Android, with startup Magnet - 1503230453
      • How to use crowdfunding to your advantage, with startup Hale Devices - 1503280462
      • How to overcome customer objections when selling tech, with startup Guesswork - 1503280458
    • First Things First - 029
      • Getting started with Android: A crash-course in developing for Android - 1504120601
      • How to ask a question: conducting research for your startup - 1504120603
      • MVP Design Hacks: transform your hot idea into a validated prototype - 1504120602
      • Build something people want: Solving real problems - 1504120605
    • How I - 061
      • Use BigQuery to find my most valuable customers - 1504070573
      • Manage beta testing communities using Google Play - 1504070572
      • Use paper wireframing to build native prototypes - 1504070570
      • Used social media and $0 marketing to get 68 million users - 1504070568
      • Prep to fundraise with four questions - 1504070564
      • Validated my idea in 2 days (with no code) - 1504070562
      • Build open platforms on Android - 1504120596
      • Get cheap, automatic analytics for my business using BigQuery - 1504070571
      • Write press releases to get international media coverage - 1504070569
      • Test beta-product features using Google Apps - 1504070563
      • Use URL builder to measure ROI on social media - 1504070561
      • Use events to build DeadSocial's brand - 1504070557
      • Use BigQuery to visualize streaming data - 1503220452
      • Find, screen, and hire developers - 1503120406
      • Drive engagement with social challenges - 1504070558
  • 设计
    • DesignBytes - 017
      • Paper and Ink: The Materials that Matter - 1505050793
  • 云计算
    • DevBytes: Google Cloud Platform - 021
      • Powering the next killer app with the Google Cloud Platform - 1504210672
      • Introduction to Google Cloud Endpoints - 1504210675
      • The Beauty of Scale with Google Cloud Platform - 1504210678
    • Google Cloud Platform - Big Data - 105
      • GDELT & BigQuery: Understand the world - 1502200379
    • Uncategorized - 999
      • Introducing Google Cloud Platform Resources - 1501190370
  • Google 应用开发
    • Launchpad Online - 072
      • The Setup: Creating new apps using Google APIs - 1503190428
      • Listing your files in Google Drive - 1503190429
      • Customizing Google Analytics for your startup - 1503290473
      • The Launchpad Online series - 1503190427
      • Getting started with Google Analytics - 1503290472
      • Accessing Google Maps from a spreadsheet?!? - 1502220381
      • Change the world in 10 lines of code - 1503080398
    • Google Play Services - 054
      • Google Play services 6.1 - 1503290481
      • Google Play Services 7.0 - 1503200437
      • Google Play Services 6.5 - 1501080015
    • 谷歌地图 iOS SDK - 053
      • Maps Live: New Features in the Google Maps Mobile APIs for Android and iOS - 1504300777
    • Google 移动搜索开发 - 055
      • Is your app in the Google index? - 1504120598
      • Get more engaged users with Google Search for Developers - 1503070397
    • DevBytes: Google Cast - 020
      • Google Cast SDK for Android - 1504180666
      • Media Router Framework - Part 1 - Media Router API - 1504180667
      • Overview for Google Cast Receivers - 1504180664
      • Google Cast SDK for iOS - 1504180663
    • Getting Started with the Google Maps SDK for iOS - 035
      • Getting started with the Google Maps SDK for iOS, Part 1 - 1504270757
    • IO Bytes 2014 - Wearables - 070
      • Voice Driven GDK Glassware - 1505280836
    • Route 85 - 078
      • Introducing Route 85 - 1501120022
      • Quick Tip: Don't Default that Switch! - 1501190371
      • OpenInChrome on iOS, Part 1 - 1501120023
      • OpenInChrome on iOS, Part 2 - 1501120024
      • OpenInChrome on iOS, Part 3 - 1501120025
      • OpenInChrome on iOS, Part 4 - 1501120026
    • DevBytes 2014 - 019
      • Web Components - Template - 1505040789
      • Wearable DataLayer API - 1505050792
      • Using srcset for responsive images - 1505050790
      • The picture element for art direction - 1505050791
    • Uncategorized - 999
      • Sun Surveyor brings augmented reality to photographers using Google Maps APIs - 1504200668
      • Snappy travels with the Roads API - 1503060392
      • Easy Maps Apps in Java and Python - 1501140030
  • Google 广告平台
  • Polymer
    • Polycasts - 076
      • The Awesome Power of Auto-Binding Templates -- Polycasts #08 - 1502220382
      • Content Switcheroo with Core-Pages -- Polycasts #09 - 1502200380
      • Core Iconset -- Polycasts #02 - 1505040788
  • Web 平台
    • HTTP 203 - 062
      • Gotchas - 1501140368
      • Font Rendering - 1501080016
    • Web Components - 081
      • DevBytes: Web Components - Overview - 1504250709
  • 宣传视频
    • Uncategorized - 999
      • Google Developers - 1501150369
      • I/O Extended 2014 - Join me - 1502220383
  • Google 各类开发者会议
    • 2014 Chrome 开发者高峰会议 - 009
      • Keynote - Chrome Dev Summit 2014 (Darin Fisher) - 1503120407
      • TLS All the Things! - Security with Performance(Chris Palmer) - 1503140412
      • Let’s build some apps with Polymer!(Rob Dodson) - 1503150415
      • Day One Closing Remarks(Sundar Pichai) - 1503150417
      • Chrome Leadership panel - 1503160422
      • Fundamentals of Mobile Web Development(Matt Gaunt) - 1503150416
    • 2015 游戏开发者大会中 - 039
      • FlatBuffers - 1504150640
      • Games for Google Cast - 1504150637
      • Top 10 Things Android Game Developers Should Know v 3.0 - 1504150643
      • Automate Publishing for Google Play APIs - 1504150639
      • 3 Game Design Mistakes You're Making - 1504150636
      • Android TV - 1504150638
      • How to Go Viral Without Really Trying - 1504150641
    • Devoxx 2014 Interviews - 024
      • What's new in Android 5.0 Lollipop - 1504260740
      • Android Tools - 1504260743
      • BigQuery and user-defined functions - 1504260744
    • IO Bytes 2014 - 065
      • Dart in Google Cloud - 1505070810
      • Big genomic data on Google Cloud Platform - 1505070811
      • Easy International Checkout with Chrome - 1505070802
      • Google developer tools and APIs for iOS - 1503190436
      • Whet your appetite with IO Bytes - 1501080021
    • PlayTime@Shanghai - 095
      • 主题演讲 Chris Yerga - 1504060549
      • 如何成功地开发你的应用 Ellie Powers - 1504060550
      • 在Google上营利 Brahim Elbouchikhi - 1504060551
      • Playtime Shanghai event sizzle reel - 1504070552
    • Project Google I/O 2015 - 098
      • Project Tango Mobile 3D tracking and perception - 1506120857
      • Democratizing Education - 1506120868
      • Improve your Android app’s accessibility - 1506120864
      • Google Cloud Messaging 3.0 - 1506120844
      • Developers connecting the world through Google Play - 1506120862
  • 开源开放技术
    • Compressor Head - 013
      • The Trailer, Season 2 - 1503060385
      • Behind the Scenes - 1503210441
      • Arithmetic Compression (Ep 5, Compressor Head) Google - 1503070394
      • Introducing Compressor Head - 1502120372
      • Episode 1 (Variable Length Codes) - 1502120373
      • Episode 2 (The LZ77 Compression Family) - 1502120374
      • Episode 3 (Markov Chain Compression) - 1502120375
Powered by GitBook
On this page
  • 译者信息
  • 解说词中文版:

Was this helpful?

  1. Google 应用开发
  2. Launchpad Online - 072

Listing your files in Google Drive - 1503190429

PreviousThe Setup: Creating new apps using Google APIs - 1503190428NextCustomizing Google Analytics for your startup - 1503290473

Last updated 5 years ago

Was this helpful?

视频发布时间

2014年11月13日

视频介绍

This episode walks you through the few lines of code needed to list your files & folders in Google Drive.

视频推介语

暂无,待补充。

译者信息

翻译

润稿

终审

原始链接

中文字幕

翻译流水号

加入字幕组

虎子

葛佳恒

--

1503190429

解说词中文版:

嘿 大家好

我是Wesley Chun 谷歌的工程师和开发者大使

在这段视频里 我们将完成一个能够

列举你在Google Drive上的文件的脚本

但是在开始之前 为什么要使用Drive的API

我们不是在讨论如何在Google Apps 文件同步

或者是用户界面集成方面使用Drive SDK

不是的

Drive API可以解放Drive的功能

为你的App所用

例如上传和下载文件 分享 文件夹组织

元数据 以及版本控制

通过这个API 你能写一个可以

解压文档 并且上传这些文件到Google Drive

的应用

或者是把Drive上的一系列照片做成一两张拼贴图

再将生成的图片上传备份到Drive

等等 有一个更棒的想法

好吧 你们中有多少人在不同的时间和地方拍过

大量的照片呢

整理这些照片真令人头疼

喔 如果你能够写上几行代码 让它们

能够使用每一个图片文件中的时间戳和

嵌入的地理位置信息

从数以千计的杂乱的照片中

自动创建照片专辑难道不可能吗

恩 只要有我们的API 这一切都有可能

我们今天要写的代码只是一个开端

这是你的起点

我们将用python来写

但是你可以使用任何

被谷歌API的客户端库所支持的语言来写

因为各种语言的调用是类似的

当使用Google API 有些情况需要认证

有些情况则不需要

例如 普通的YouTube视频的搜索

就不需要认证 但是接入Google Drive

和更新你的YouTube播放列表

就需要 因为这是私人数据

两种情况都有一些示例代码

挑选合适的使用吧

对我们来说 因为今天我们要和Drive打交道

你将会使用需要认证的代码

如果你没有学过的话 可以点击链接看看

之前的关于这个话题的教程

现在我们正在看代码 来 让我们

去电脑上写脚本吧

在之前的课程中 我们看过实现认证的

访问Google API数据的模板代码

对于需要认证的API请求

代码基本都是相似或者完全一样的

所以你应该写的很爽

今天我们将使用Google Drive API

所以一开始我们将把模板代码粘贴到这儿 存作drivelist.py

你随便怎么取名字都行

在本次的课程中 我们想列举出我们在Drive文件夹中的文件

这是用户数据 所以需要认证

你无法仅仅通过一个API key就获得这类数据

在import语句下面 你要做的第一件事就是

在第五行声明SCOPES变量

取决于你想干嘛

你可能需要一个或者更多的权限值

所以要么定义一串字符串

或者是一个以空格分隔的包含多个权限值的长字符串

我们唯一需要的权限就是drive.readonly

这也是我们定义的SCOPES变量的全部值

你能从API页面或者OAuth Playground中

获取权限的列表

第六行是一个客户端的秘密文件

在你点击项目认证页面上的Download JSON按钮时会

保存这个文件

当应用被授予访问权限以后

你会收到一个访问令牌

它会被保存在第八行代码中的文件里

因为我们即将第一次运行这个脚本

我们没有任何凭证 这意味着

代码无法通过第十行的if判断语句

里面的代码是用于进行OAuth授权流程的

一旦访问被授权 我们需要创建一个服务端点

这在14行里有

这个API字符串参数就是drive 因为

这就是我们将要访问的API

这个API目前更新至第2版

所以我们将VERSION参数设置为v2

最后一个参数是使用我们的凭证

去签名我们的HTTP请求

一旦所有东西都正常执行了

那我们现在就会有一个服务端点去访问Google Drive了

我们想要拉取一个用户的文件

那么我们先来创建一个files变量吧

恩 我们将用一个服务端点去进行访问

我们将会调用files()方法进行文件访问

然后我们会使用list()方法去获取文件列表

然后要执行execute()方法

如果前面都没错的话 我们将获得一个返回的payload对象

它里面有一个items成员变量

但是以防万一 我们会提供一个空列表参数 这样我们下面的

for循环就不会崩溃

现在我们想要迭代每一个文件

对于files里的每一个文件 我们要怎么做呢

我将会展示文件名

这个通过title字段可以获取

我们也会展示它的类型

这由mimeType字段定义

基本上就是这样了

代码应该可以运行了

所以让我们在这的命令行窗口试试看

对了 如果你想知道你还能从API里获得哪些数据

看看文档就知道了

现在来运行一下吧

通过OAuth授权流程 获取凭证

再查看一些Drive中的文件

顺便说一下 在我运行之前

这时会有提示

tools的run()方法已经被废弃了

的确如此

有一个更新的叫runFlow()的方法

但是在Python环境下 这个需要额外的编码

我们会在另外的课程中看看这些变化

我们暂时还是使用tools.run()方法

它勉强还能用

很多代码里还会用到它

但是它早晚会被代替的

运行这个命令时

我们能看到浏览器的弹窗进行OAuth授权的流程

你可以在这里看到弹窗

现在如果你没有看到一个OAuth授权的窗口

而是看到了一个写着401错误的页面

上面说你缺少应用名称或者Email

先找到项目许可页面

填完刚才的两项 其他项都是可选的

并且记得保存

现在你就可以看到和这个一样的页面了

一旦用户通过授权 一个有效的访问令牌会发送回来

并且存在storage.json文件中 这是代码8到12行做的事情

然后就开始执行下面的代码

我们应该可以看到很多Drive文件出现在这里

看啊 果然如此

好了

不到20行代码就可以访问你的Drive文件了

当然 这才刚开始而已

你想过做移动端程序吗

对 Drive具有针对Android和iOS的API

去看开发者文档 你会找到更多信息

好了 我们希望以上这些能对你有些启发

让你更好地使用Google Drive进行开发

我是Google的Wesley Chun 希望下次我们依然能在

Launch Pad见面

Youtube
Youtube
加入 GDG 字幕组
video_screenshot