MENU

利用微软 OneDrive API 和腾讯云 SCF 免费搭建个人网盘

2019 年 09 月 01 日 • 阅读: 32590 • 后端

旧版停止维护,请查看 新版安装和美化步骤

演示地址

SCF 简介

腾讯云云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码,是实时文件处理和数据处理等场景下理想的计算平台。您只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。

无服务器(Serverless)不是表示没有服务器,而表示当您在使用 Serverless 时,您无需关心底层资源,也无需登录服务器和优化服务器,只需关注最核心的代码片段,即可跳过复杂的、繁琐的基本工作。核心的代码片段完全由事件或者请求触发,平台根据请求自动平行调整服务资源。Serverless 拥有近乎无限的扩容能力,空闲时,不运行任何资源。代码运行无状态,可以轻易实现快速迭代、极速部署。

腾讯云 SCF 目前仍在 公测 阶段,所有用户可免费使用,结束日期待定。公测结束后,每月仍可享受足量的 免费资源使用量和免费调用次数,但收取 外网出流量 费用。

资源类型每月免费额度
资源使用量40 万 GBs
调用次数100 万次

所谓外网出流量,即程序通过 SCF 访问外部网络的流量,对于本程序即请求微软 API 的流量,每次调用从几 B 到几 KB 不等;文件上传下载直接与微软交互,不经过 SCF。

下图(老图可能与描述不符)是我一天的使用量,大概调用了 10000 次,如果是 30 天就是 30 万次,还不到免费额度的 1/3。资源使用量 1000 GBs,30 天就是 3 万 GBs,远低于 40 万 GBs。外网出流量 0.05G ,一个月大概是 1.5 G,按照 正式收费标准 0.8 元/G,每月要支付 1.2 元的出流量费用,完全可以接受(目前不会收取)。

@YL51PJT6NML6PZW{TAI.png

创建函数服务

登录 腾讯云 SCF 控制台(在此之前要完成腾讯云 实名认证),点击左侧菜单栏的 函数服务,接着点击顶栏的地区选择下拉框,选择 香港,因为大陆区域在绑定域名时需要备案,如果你拥有已备案的域名,则可以选择国内,当然不绑定域名也可以使用。接着点击蓝色的 新建 按钮,创建函数。

create_a_function

随后在新建函数页面填写 函数名称,名字随意;运行环境 选择 Php 7.2创建方式 选择 模板函数;选择 helloworld 模板,最后点击最下方的 下一步。进入 ② 函数配置 页面后不做任何修改,直接点击 完成

GX<code>VWO~RYU4QSIHM</code>EE_{PG.png

上传函数代码

下载并解压 OneDrive_SCF。随后,进入 SCF 函数代码 面板,将 提交方法下拉框 的值改为 本地上传文件夹,随后点击 上传,选择 解压好的文件夹,最后点击 保存。注意,解压后查看一下是否包含两层文件夹,如果是,上传内层。

D5OFS6O`X7}$VW)B3$UTQA.png

获取并填写 refresh_token

进入 该网址世纪互联版点我),点击其中的 Get a refresh_token,在打开的微软账号登录页面中,填写你的 OneDrive 账号和密码,完成登录。

5}R<code>T]W</code>_6)TC%RBYPYG8UV.png

稍等片刻页面将返回 refresh_token,复制它备用。

C6QSEL5POOL75U

进入 SCF 函数代码 面板,选中 index.php,将得到的 refresh_token 粘贴进,下图所示的单引号之间,最后点击靠近左下方的 保存

UUU{L_%MUDV1I}YSTPXZ2.png

配置环境变量

进入 函数配置 面板,点击靠近右上角的 编辑 按钮。

_SP7_T$@DA}LQRVA3SG}44G.png

在新面板中,将 内存 修改为 512M,当然 64M 也是可以运行的,需要说明的是,内存越大可用的免费时长越少;超时时间 填写 30,随后添加几个环境变量,它们的功能如下:

名称含义备注示例
sitename站点名称我的网盘
public_path要展示的根路径/
private_path要展示的根路径使用自定义域名时必须设置/
imgup_path图床路径其他网页可以引用上传的图片/图床
passfile密码文件名称在某目录下添加该文件,里面写入密码即可加密文件夹password.txt
admin管理员密码管理员登录后功能更多1234

1J8I6IJD@2J8AIH8WWQ4KM.png

添加触发方式

进入函数服务的 触发方式 面板,点击 添加触发方式。选择触发方式下拉框中的 API网关触发器,勾选下方的 启用集成响应,点击 保存

SC6P6_()$O$FK7_IB_S3(}4.png

稍等片刻,下方会出现一个 访问路径,点击打开它。

2UV{Q5H@V13S956@IWG7`2.png

出现网盘首页代表安装成功。

_Z_QK7_3G}T}IGT4WZ`{)E.png

自定义域名(可选)

进入函数服务的 触发方式 面板,点击打开 SCF_API_SERVICE

_H1UQ7TU$31)R54B97VK$S.png

打开服务界面的 自定义域名 面板,点击 新建

47Q4Z)PLOV{AC@AFFIS5.png

在添加域名对话框中,填写你的 域名协议 选择 http,如果你想使用 https,则必须在腾讯云 申请或上传 SSL 证书,如果你已经在其他平台申请过推荐直接上传,因为申请一般要等待数小时才能完成。未进行上述操作你看到的 证书下拉框 里将会是。网络类型勾选 外网。选择 自定义路径映射,添加一条记录,路径为 /,指向 发布 环境。

I%G@QBED$T6OJ.png

打开你的域名解析服务商控制台,在域名解析列表里添加一条 CNAME 记录,值便是图中上方的 外网二级域名。最后点击 提交

进入 管理 API 面板,点击 编辑

7K.png

前端配置 面板中,将路径改为 /,点击下一步。

MU0D8F.png

后端配置 中,保证已勾选 启用集成响应 后点击 下一步

TZDO.png

响应结果 面板,将 返回类型 改为 HTML,点击 完成

afaPU.png

在弹出的对话框中,点击 前往发布服务

fafadfEGM.png

服务信息 面板,点击靠近 右上角发布 按钮。

fafadUHOH8MI5.png

在弹出的 发布服务 对话框中,将 发布环境 改为 发布备注 随意填写,最后点击 提交

8WBC7C0UQfadf.png

现在就可以通过自定义域名访问你的网盘了。

使用 Github Pages 缩短长链接(可选)

如果你没有域名和服务器,可以通过 Github Pages 跳转的方式,适当缩短首次访问的路径长度,最终可以通过 username.github.io 打开你的网盘。

注册并登录 Github,随后打开 该仓库,点击靠近右上角的 Fork。稍等片刻,打开页面中部的 index.html

YSG)}(}WF$V6(I8Z(RF7FK.png

点击靠近 右上角铅笔 按钮,编辑该文件。

fafdafdafQA.png

将你的 函数 API 网关访问路径 替换到文件中。

%{$U69~_}~DAL0($(U9@D`9.png

修改完毕后点击靠近页面最下方的 Commit changes

`56PL$O1D}(V2P@4WR%P6B.png

点击靠近右上角的 Settings,将 Repository name 改成 你的 Github 用户名.github.io,随后点击 Rename

@(S16VV$)48~O8MHD6KYB5D.png

下拉该页面,找到 Github Pages,将 Source 下拉框的值改成 master branch,如果没有则无需修改。

}`R6~2N@)LINVXYJ5LEP59.png

现在,就可以通过 你的 Github 用户名.github.io 访问网盘了。

功能建议、Bug 反馈,请前往 逸笙大佬主页,也请为他多多加星。

TG 大佬群 QQ 大佬群

最后编辑于: 2020 年 09 月 05 日
返回文章列表 文章二维码
本页链接的二维码
打赏二维码
添加新评论

已有 235 条评论
  1. Denisty Denisty     Windows 10 /    QQ浏览器

    搭建好后管理密码是admin吗?

    1. Denisty Denisty     Windows 10 /    QQ浏览器

      @Denisty或者说怎么管理啊QAQ

    2. Denisty Denisty     Windows 10 /    QQ浏览器

      @Denisty搞定了=+=

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @Denisty秒啊::quyin:die::

  2. 暗袋 暗袋     Android Pie /    Google Chrome

    请问一下、世纪互联国内的onedrive可以吗

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @暗袋支持

    2. 暗袋 暗袋     Android Pie /    Google Chrome

      @LOGI谢谢,回去我试试

    3. 暗袋 暗袋     Android Pie /    Google Chrome

      @暗袋能够添加但是不能预览图片和视频,现在的话有错误代码

      {"error":{"code":"serviceNotAvailable","message":"Service unavailable","retryAfterSeconds":120}}

    4. LOGI LOGI     Windows 10 /    Google Chrome

      @暗袋index.php 头部有设置账户版本的地方,你看看

  3. mocuishle mocuishle     Windows 10 /    Google Chrome

    哈哈别的地儿申请的证书没在腾讯云备案用不了用网关访问路径可太慢了,文件上传到od马上就能展示出来挺赞的,pyone还要同步

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @mocuishle这版主要是能白嫖腾讯云,管理功能还是不及其他有服务器版本。如果仅为了列表快可以试试 FODI
      https://logi.ml/front-end/scf-fodi.html

  4. 无殇 无殇     Android Pie /    Google Chrome

    网页弄好了以后,单个文件没办法删除,文件夹可以删除,大佬能解决一下吗?@@(真棒)

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @无殇功能或建议到 Github 提吧,这篇文章只解决安装问题,并且我推荐使用客户端管理

  5. 沫颜 沫颜     Windows 10 /    FireFox

    怎么创建文件夹,我这边怎么创建不了文件夹?

    1. LOGI LOGI     Android Pie /    Google Chrome

      @沫颜文中没提到创建文件夹,你说的是哪一步呢

    2. 沫颜 沫颜     Windows 10 /    FireFox

      @LOGI我是已经搭建成功了,用管理员登录后上传文件时怎么创建文件夹?

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @沫颜本文仅解决安装问题。此外,界面上有新建文件夹的按钮,更推荐使用客户端管理文件

  6. 无殇 无殇     Windows Vista /    Opera

    大佬,那个OneDrive_SCF文件夹上传不了

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @无殇换浏览器或者开隐私模式以关闭所有插件,可能是插件与网页冲突了

    2. 无殇 无殇     Windows Vista /    Opera

      @LOGI解决了,谢谢大佬

  7. 欢歌 欢歌     Windows 10 /    FireFox

    大佬 不成功啊 到Get a refresh_token这一步,登陆了微软账号后返回
    “”如果长时间未跳转,请点击:继续安装
    有误!微软code为空!“”
    并没有得到代码 什么原理啊 是我的微软账户有问题?

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @欢歌你用的是什么账户呢

    2. 欢歌 欢歌     Windows 10 /    FireFox

      @LOGI用的是申请的教育网1T的office账户,用客户端和网页版上传下载都没问题 但是操作到这一步就返回 有误!微软 code 为空!

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @欢歌如果是国内教育账户,试着把 index.php 里面的版本改成 1,具体见下图
      https://img12.360buyimg.com/img/jfs/t1/43290/21/15591/35744/5d847109E66e1f130/bf733cf532660643.png

    4. 欢歌 欢歌     Windows 10 /    FireFox

      @LOGI好的 我去试试 谢谢回复!!@(呵呵)

    5. 欢歌 欢歌     Windows 10 /    FireFox

      @LOGI还是不行 改成1之后点开get token的链接之后账户都登不进去了。。。说系统内没有这个域

    6. LOGI LOGI     Windows 10 /    Google Chrome

      @欢歌那可能是管理员没有开放 API 权限吧

    7. 欢歌 欢歌     Windows 10 /    FireFox

      @LOGI大佬 从你这买的那个可以吗? 能用多久 我买一个

    8. LOGI LOGI     Windows 10 /    Google Chrome

      @欢歌可以,但是能用多久要看微软政策,目前我的已经用了 1 年

    9. 欢歌 欢歌     Windows 10 /    FireFox

      @LOGI涨价了啊 还是我来晚了

    10. LOGI LOGI     Windows 10 /    Google Chrome

      @欢歌之前是促销@(捂嘴笑)

    11. 欢歌 欢歌     Windows 10 /    FireFox

      @LOGIok

  8. 二腿子 二腿子     Windows 10 /    Google Chrome

    请问怎么创建password .password没有文件名创建不起来呀

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @二腿子我用 Win10 可以呀@(捂嘴笑),不叫 .xx 也行,环境变量随便改的。

      或者用下面的 Powershell 命令生成,其中 1234 是密码。

      1234 | Out-File .password

    2. 二腿子 二腿子     Android Pie /    QQ浏览器

      @LOGIpassword后加个.就可以了已解决谢谢

  9. ac ac     Android /    QQ浏览器

    可是五服务器云函数说外网流量不免费,这里外网指的是啥?

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @ac云函数目前还在公测,不收费,所以不用担心,具体见
      https://cloud.tencent.com/document/product/583/17299

      公测期限试情况而定,即使正式收费,如上文所述,仍有充足的免费调用次数和资源使用量,仅收取外网出流量费用。

      对于本程序,外网出流量指的是向微软请求 Onedrive 文件列表和上传文件的流量。我没有开放文件上传,不过现在 1 天也有接近 1 万次调用,1 千 G 资源使用和 0.05G 的外网出流量。一个月大概产生 1.5 G 出流量,按照今后的收费标准,0.8 元/G,每月大概会扣 1.2 元,具体见
      https://cloud.tencent.com/document/product/583/12281

      所以现在不用担心,正式收费后只要关闭上传,每月的费用也可忽略不计。

    2. LOGI LOGI     Windows 10 /    Google Chrome

      @ac纠正一下,目前的上传功能是直接从浏览器到 Onedrive 的,不经 SCF,所以不计外网出流量,可以放心上传。

    3. cx cx     Windows 7 /    Google Chrome

      @LOGI感谢博主的解答,今天上传了个4G文件,好像没有大小限制,是修复了吗。
      还有个问题,买了你提供的教育部账号,管理员会不会看到网盘的内容,还有哪天网盘账号被删了@(吐舌)

    4. LOGI LOGI     Windows 10 /    Google Chrome

      @cx管理员能够看到,虽然我不会看。账号违规使用会被封停,但有半年左右的时间取回文件。所以不要存放隐私内容,特别重要的文件要在别的地方备份。

      上传功能还在优化,我不是主作者,有问题可以到 Github 反馈。感谢支持
      https://github.com/Tai7sy/OneDrive_SCF

    5. cx cx     Windows 7 /    Google Chrome

      @LOGI博主,我想要你那个演示地址帅气的站点名字,咋弄的。@(乖)@(乖)

    6. LOGI LOGI     Windows 10 /    Google Chrome

      @cx@(哈哈) 改一下字体就行了,可以直接用下面这个 index.php 的内容替换你的,需要填入你的 refresh_token
      https://disk.ml/Linux/Sources/OD-SCF/index.php

      修改过程见下图
      https://img11.360buyimg.com/img/jfs/t1/57877/38/11225/48734/5d81ffadE8ee00e28/30754885898fb609.png

    7. cx cx     Windows 7 /    Google Chrome

      @LOGI谢谢。@(花心)

  10. dhwc dhwc     Windows 10 /    Google Chrome

    做到最后改dhwc.github.io,访问提示404?怎么破???@(狂汗)

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @dhwc下拉该页面,找到 Github Pages,将 Source 下拉框的值改成 master branch,如果已经是则无需修改

      上面这步没有做哦,index.html 里面也没有改成你的地址,跟着教程再做一遍吧

    2. dhwc dhwc     Windows 10 /    Google Chrome

      @LOGI谢谢,搞定了

  11. 勒1211 勒1211     Windows 7 /    Google Chrome

    在改短链时没有下拉选择框怎么办,
    找到 Github Pages,将 Source 下拉框的值改成 master branch

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @勒1211是否 fork 了 redirect 项目呢,把你的项目地址贴出来我看一下啊

  12. TREE TREE     Android Pie /    Google Chrome

    最后访问Onedrive 网盘时出错了,提示{"errorCode":-1,"errorMessage":"User process exit when running"},这个该怎么办?

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @TREE检查一下 refresh_token 和环境变量填错没有

  13. xuehuwzg xuehuwzg     Windows 10 /    MicroSoft Edge

    博主,你好谢谢你的分享,如果能“创建上传回话”来上传大文件就更好了。。。。。可以上传大文件吗?

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @xuehuwzg项目里我的代码不到 1%,有需求请到 Github 向主要作者提哈https://github.com/Tai7sy/OneDrive_SCF

  14. wz wz     Windows 10 /    Google Chrome

    请问怎么替换index.php文件啊

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @wz用记事本打开复制粘贴@(你懂的)

    2. wz wz     Windows 10 /    Google Chrome

      @LOGI感谢回复,弄好之后,不知道真懂还是假懂的客服提醒我说,就算我上传文件到网盘属于外网流量会后收费,所以想问下这个免费额度究竟包括哪些流量,适合将大量资源共享出来让多人下载吗

    3. LOGI LOGI     Android Pie /    Google Chrome

      @wz客服不是专门搞技术的,不可能知道每个应用的原理,放心分享就行了,SCF 只负责解析直链并返回,所以只扣少量的 HTTP 请求和 HTML 响应流量。

    4. wz wz     Windows 10 /    Google Chrome

      @LOGI万分感谢

  15. underworld underworld     MacOS /    Google Chrome

    再想问下博主,您的网盘播放器是怎么设置的,我感觉原生的播放器播放速度好慢啊,特别是开头缓冲时间太久了@(乖)

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @underworld用这个 [文件](https://disk.ml/Linux/Sources/OD-SCF/index.php/preview) 替换 `index.php` 就行了,记得把 `refresh_token` 换成你的,不过速度可能并不会提升@(捂嘴笑)

    2. LOGI LOGI     Windows 10 /    Google Chrome

      @LOGIhttps://disk.ml/Linux/Sources/OD-SCF/index.php/

    3. underworld underworld     MacOS /    Google Chrome

      @LOGI好滴!请问博主是不是网盘的域名用了cdn?怎么那么快?@(你懂的)

    4. LOGI LOGI     Windows 10 /    Google Chrome

      @underworld没有,可能我用的第一版功能少吧

    5. underworld underworld     MacOS /    Google Chrome

      @LOGI博主,我今天安装解析到域名后出现:{"message":"There is no api match uri '\/' host 'cmzx.ecut.cloud'"} 您知道怎么回事吗?哪个步骤出问题了呢?@(乖)

    6. LOGI LOGI     Windows 10 /    Google Chrome

      @underworldCNAME 没问题,[自定义路径映射] 或者 [ 前端配置 ] 的路径错了,再仔细看一遍文章的自定义域名部分哈

  16. 小新 小新     Windows 10 /    Google Chrome

    你好呀,为什么“将网址栏的 localhost 替换为 函数 API 网关访问路径 后回车。”这一步回车之后,还是提示我要“get a refresh_token” @(乖)

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @小新只替换 localhost,后面的路径和参数都要保留哦

    2. 小新 小新     Windows 10 /    Google Chrome

      @LOGI现在我点开"get a refresh _token"跳出的网页不会再跳转到微软登录界面 而是提示找不到网页"http://localhost/authorization_code?error=access_denied&error_description=“@(惊哭)

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @小新在隐身模式里面打开试试哦

    4. 小新 小新     Windows 10 /    Google Chrome

      @LOGI@(委屈)

    5. LOGI LOGI     Windows 10 /    Google Chrome

      @小新解决不了吗,要不然你加我 QQ,和邮箱同号::quyin:1huaji::

    6. 小新 小新     Windows 10 /    Google Chrome

      @LOGILL,搭好了,但我好像不会用,它没有上传的按钮欸,还有就是腾讯云里环境变量,sitename啊那些,填写好了,但是点击保存没有反应@(啊)。有没有什么办法在index里面添加进去呢? 谢谢啊

    7. LOGI LOGI     Windows 10 /    Google Chrome

      @小新上传按钮需要先登录,如果网盘里什么都没有好像也无法上传。不过建议使用官方网页或客户端管理文件,该页面仅做分享使用。环境变量不保存可能有两个原因:1. 浏览器插件冲突,一般使用隐私模式打开即可。2. 腾讯云服务器响应较慢,点击保存后等待 1 分钟左右看看。

    8. 小新 小新     Windows 10 /    Google Chrome

      @LOGI开隐私模式秒保存,为什么啊啊啊啊啊,折腾了好久。@(真棒)谢谢谢谢欸嘿

  17. underworld underworld     MacOS /    Google Chrome

    hhhhh,我在腾讯云有ssl和备案好的域名,一个小时就搞定了,吹爆博主!@(吐舌)

    1. MM MM     Windows 10 /    Google Chrome

      @underworld自定义域名怎么搞

    2. underworld underworld     iPhone /    Google Chrome

      @MM就按照博主的教程啊,自己创一个cname域名解析,绑定就好

  18. underworld underworld     MacOS /    Google Chrome

    想问下,这个可以让他人注册使用吗?还是只能我自己上传别人只能下载?@(勉强)

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @underworld目前不能注册,任何人使用管理员密码登录可以上传 4M 以内的文件。所以一般是所有者使用客户端上传,访问者只能下载。

    2. underworld underworld     MacOS /    Google Chrome

      @LOGI还想问下博主,这个能不能设置私密文件夹,要密码才能看的那种?@(太开心)

    3. LOGI LOGI     Android Pie /    Google Chrome

      @underworld可以的,如果你添加了文中的几个环境变量,那么某个在文件夹下新建一个 .password 文件,用记事本把密码写进去保存就可以加密这个文件夹了。

  19. 奕奕 奕奕     Windows 10 /    Google Chrome

    自定义域名出错了,提示{"message":"There is no api match env_mapping '\/'"}
    不知道是哪一步的问题

    1. 奕奕 奕奕     Windows 10 /    Google Chrome

      @奕奕自定义域名加上环境名就可以访问,直接域名不行

    2. 奕奕 奕奕     Windows 10 /    Google Chrome

      @奕奕搞定了

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @奕奕是我疏忽了,现已加上。@(太开心)

    4. MM MM     Windows 10 /    Google Chrome

      @奕奕自定义域名怎么搞

    5. 奕奕 奕奕     Windows 10 /    Google Chrome

      @MM修改路径就好,这样就不用域名加路径访问了,博主已经改了教程,按照他说的弄就行

    6. xi xi     MacOS /    Google Chrome

      @奕奕我这里修改了路径之后,自定义域名还是没办法打开,不知道为啥

  20. 盛夏 盛夏     Android Oreo /    QQ浏览器

    纠正一下:腾讯云及其他云申请域名证书不需要将域名转入至其平台

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @盛夏感谢提醒,是我孤陋寡闻了,不过阿里的函数服务是支持证书上传的。另外,不睡了吗@(滑稽)