MENU

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

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

请优先查看 新版安装和美化步骤

演示地址

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

添加触发方式

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

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

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

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

获取并填写 refresh_token

页面加载完毕后,点击其中的 Get a refresh_token,在打开的微软账号登录页面中,填写你的 Onedrive 账号和密码,完成登录。

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

登录完毕后浏览器将跳转回上面的页面,此时修改网址,从左往右找到第一个 ?,将其 删除。再找到第一个 &,将其改为 ?,注意要使用英文输入法。下面是修改前后的网址对比:

https://.../?authorization_code&code=...
https://.../authorization_code?code=...

修改完毕后直接回车,稍等片刻页面将返回 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 网关访问路径,即可访问你的 Onedrive 网盘。

_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 大佬群 QQ 追番群

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

已有 194 条评论
  1. Wyane Wyane     Windows 7 /    Google Chrome

    你好,根据大佬的这个版本搭建好了,但是有个bug不知能否帮忙看一下。
    我看到大佬的这个游客在图床目录上传的时候用的是base64upfile那个代码。 原版好像是和管理员的登录后一样的上传方式。大佬这个游客上传的图片文件名成了只显示后缀的文件,比如.jpg .png。请问要如何修改成和管理员一样的上传方式?先谢谢了。@(吐舌)

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @Wyane装新版即可

    2. Wyane Wyane     Windows 7 /    Google Chrome

      @LOGI新版是本文中上传函数代码那部分的文件吗?我今天刚搭的,莫非有其他新版吗?

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @Wyane见开头新版教程链接

    4. Wyane Wyane     Windows 7 /    Google Chrome

      @LOGI看到了,谢谢了!@(哈哈)

  2. bx bx     Windows 10 /    Google Chrome

    您好,我想问一下触发方式添加好之后生成的访问路径打开显示 :此网站无法提供安全连接service-2b26hf1k-1301302930.ap-hongkong.apigateway.myqcloud.com 发送的响应无效。

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @bx腾讯云香港空间挂了,先换其他地区

    2. bx bx     Windows 10 /    Google Chrome

      @LOGI好的,谢谢大佬

  3. 张奇 张奇     Windows 10 /    Google Chrome

    您好,我想问一下,我在API网关触发器这一步点击网址显示了此站点的连接不安全,发送了无效的响应,这个怎么解决?麻烦告知一下,谢谢

  4. wzx wzx     Windows 10 /    Google Chrome

    大佬,我index.php是空的,里面什么都没有怎么办

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @wzx隐身模式(无痕模式)打开浏览器

  5. daowuya daowuya     Windows 10 /    Google Chrome

    博主,请问QQ群号多少....

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @daowuya文章末尾的按钮进不去吗

  6. cx cx     Windows 10 /    Google Chrome

    买的网盘忘记密码了怎么办

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @cx怎么不保存呢

    2. cx cx     Windows 10 /    Google Chrome

      @LOGI太久了,又换过手机。。有没有办法,那边改下密码,谢谢,我改密码时候提示我没权限,只能组织机构管理员改

  7. gpgao gpgao     Windows 10 /    Google Chrome

    您好,您改过原作者的源码吗?您的ui界面挺好的,可以分享一下您怎么改的吗?

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @gpgao是的,文章提供的版本就是改过的,可以直接安装。至于改的过程可以加群详聊

    2. znc znc     Windows 8.1 /    QQ浏览器

      @LOGI群号能说一下嘛@(呵呵)

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @znc文末就是呀

  8. QAQ QAQ     Windows 7 /    Google Chrome

    大佬,能加一个IP访问记录,以及限制IP访问的面板吗,因为不想别人一不小心访问我的网盘。@(呵呵)

    1. LOGI LOGI     Android Pie /    Google Chrome

      @QAQ可以设密码

    2. QAQ QAQ     Windows 7 /    Google Chrome

      @LOGI可以设置下载密码吗@(太开心)我还没更新,我先更新看下

    3. QAQ QAQ     Windows 7 /    Google Chrome

      @LOGI新版的token只能填在环境变量吗,我这怎么获取不到
      报错
      Error
      UnauthorizedOperation.FunctionStatus
      Function status Updating is not allowed to do UpdateFunctionConfiguration.

      function_name:driver
      Region:ap-hongkong
      namespace:default

    4. LOGI LOGI     Android Pie /    Google Chrome

      @QAQ嗯,仅限本文使用的版本

  9. 云知道 云知道     Windows 10 /    FireFox

    添加触发方式的时候提示操作未授权 ([TencentCloudSDKError] Code=InternalError.GetRoleError, Message=[QC_STS] role not exist, Requ

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @云知道留下联系方式,我帮你看一下

    2. 云知道 云知道     Windows 10 /    Google Chrome

      @LOGI我找到问题了,现在弄好了,进去时候要去领取!大佬有qq群或者什么群没有。

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @云知道我把群更新到文章最后了,想加可以加一下。

    4. 沙提拉 沙提拉     Windows 10 /    Google Chrome

      @云知道怎么领取啊

  10. YINUXY YINUXY     Windows 10 /    Google Chrome

    膜拜大佬,按照大佬的教程一次成功:在这里想向大佬请教一个问题:就是我想把网页的logo替换为自己的,应该怎么设置呢

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @YINUXY统一回复:
      如需更改浏览器标签页左上角的小图标,在代码目录放置一个名为 favicon.ico 的图片即可,可使用下面的网页制作。
      https://myico.cn

    2. YINUXY YINUXY     Windows 10 /    Google Chrome

      @LOGI是根目录吗

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @YINUXY嗯,跟 index.php 同级

  11. all all     Windows 7 /    Google Chrome

    @(小乖)大佬 我设置和你一样不能跳转https

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @all先试试手动加 https 能否访问

    2. LOGI LOGI     Windows 10 /    Google Chrome

      @all统一回复:
      绑定自定义域名后,如需强制 https,把 index.php 765 行的注释去掉即可。具体操作是删除行首的 <!-- 和行尾的 -->。该行内容见下图
      https://image.suning.cn/uimg/ZR/share_order/157364137664617688.jpg

      如果不知道我说的是什么,说明您不需要设置,因为设置与否不会影响正常使用。

    3. all all     Windows 7 /    Google Chrome

      @LOGI感谢大佬。很棒 很厉害

  12. Alen Alen     Windows 10 /    Google Chrome

    很赞,一次成功。测试中...@(哈哈)

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @Alen赞赞赞@(捂嘴笑)

  13. 不羡仙 不羡仙     Android Pie /    Google Chrome

    域名解析显示是成功的,但是访问还是没有用。

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @不羡仙环境变量设置了吗,需要帮助就留下联系方式

  14. jkjk jkjk     Windows 10 /    Google Chrome

    自定义域名全都设置和你一样。我的就是不行。白买了个域名

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @jkjk哈哈,说说什么表现,实在不行我加你 QQ

    2. LOGI LOGI     Windows 10 /    Google Chrome

      @LOGI应该是 SSL 证书的问题,你申请一个证书开启 https 就行了,申请步骤见上文

    3. 王     Android Oreo /    Google Chrome

      @LOGI我愿意拜你为师,只要你开出条件,平时喜欢琢磨网络上的一些教程,愿意听从你的指挥。

    4. LOGI LOGI     Windows 10 /    Google Chrome

      @王不敢当@(笑尿)

    5. 大哥 大哥     Windows 7 /    Google Chrome

      @jkjk怎么联系你呀

    6. LOGI LOGI     Windows 10 /    Google Chrome

      @大哥有什么问题吗

    7. 王     Android Oreo /    Google Chrome

      @LOGI能否留下你的联系方式。

    8. LOGI LOGI     Windows 10 /    Google Chrome

      @王可以留下你的,我加你

  15. hhh hhh     Windows 7 /    Google Chrome

    搭建好后一直没怎么用过,今天试着上传了一些文件,开始的时候还很正常,但是在下午上传时,文件上传到100%后,又回到百分之八十几或者九十几,就不停地在那里循环上传,但一直不能成功上传,试了几次都是这样,而且收到一封onedrive的邮件说我删除了大量邮件,并提示可以从回收站将文件还原,可事实上我并没有进行删除操作,而且网盘界面也没有回收站这一项。

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @hhh用客户端上传吧,网页可能不稳定。至于提示删除,是密码泄露了吗@(笑尿)

    2. hhh hhh     Android /    Google Chrome

      @LOGI客户端是在哪里下载?

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @hhhiOS
      https://apps.apple.com/cn/app/skydrive/id477537958?ls=1

      macOS
      https://go.microsoft.com/fwlink/?linkid=823060

      Android
      https://www.wandoujia.com/apps/1305965

      Windows
      https://go.microsoft.com/fwlink/p/?LinkId=248256

      Linux
      https://rclone.org/downloads/

    4. hhh hhh     Windows 7 /    QQ浏览器

      @LOGI下载客户端登陆后显示空间已满(5G),可能 是因为这个原因不能上传吧。

    5. LOGI LOGI     Windows 10 /    Google Chrome

      @hhh嗯嗯,你登陆的是个人账号吧。我的小商店里有 5T 空间的账号,可以看看
      https://store.logi.ml/

    6. hhh hhh     Windows 7 /    Google Chrome

      @LOGI一、购买账号后是需要到腾讯云重新搭建网盘吗,还是可以直接替换之前的个人账号?
      二、上传的单个文件有没有大小限制?
      三、有没有批量下载功能?
      四、能不能上传文件夹?

    7. LOGI LOGI     Windows 10 /    Google Chrome

      @hhh1. 重搭吧,我更新了代码

      用客户端上传没有批量下载用客户端上传
    8. hhh hhh     Windows 7 /    Google Chrome

      @LOGI刚在你的店铺购买了5T的账号,但是不能修改个人信息,提示:您的姓名和职务等详细信息可能是由您的 IT 或人力资源部门提供的。如果您想要更新这些详细信息,请联系他们或您的管理员。
      这个账号会不会哪天被收回去或被人注销呢?

    9. LOGI LOGI     Windows 10 /    Google Chrome

      @hhh管理员是我不用担心

    10. hhh hhh     Windows 7 /    Google Chrome

      @LOGI哦,那就放心了!

    11. hhh hhh     Windows 7 /    QQ浏览器

      @hhh我之前用自己的5G账号在腾讯云搭建了一个网盘,昨天又用5T的账号搭建了一个;
      一、这两个网盘会不会有什么冲突,我的意思是在腾讯云的SCF用同一个腾讯云用户名搭建了两个不同onedrive账号会不会有什么影响?
      二、按照你的方法,其中一个在github缩短了网址,因为其中要用到github的用户名,如果我另一个也想缩短网址的话,是不是要重新注册一个github账号才可以?
      三、如何删除本地文件而保留云端文件?因为很多文件我上传到网盘之后就会在电脑里删除,但是打开onedrive客户端后又会将文件同步到本地文件夹。

    12. hhh hhh     Windows 7 /    QQ浏览器

      @LOGI我之前用自己的 5G 账号在腾讯云搭建了一个网盘,昨天又用 5T 的账号搭建了一个;
      一、这两个网盘会不会有什么冲突,我的意思是在腾讯云的 SCF 用同一个腾讯云用户名搭建了两个不同 onedrive 账号会不会有什么影响?
      二、按照你的方法,其中一个在 github 缩短了网址,因为其中要用到 github 的用户名,如果我另一个也想缩短网址的话,是不是要重新注册一个 github 账号才可以?
      三、如何删除本地文件而保留云端文件?因为很多文件我上传到网盘之后就会在电脑里删除,但是打开 onedrive 客户端后云端的文件也会被删除。

    13. LOGI LOGI     Windows 10 /    Google Chrome

      @hhh
      一、没有冲突

      二、不用重新注册 github ,只需建两个仓库,仓库名必须不同。比如第一个叫 1,第一个叫 2,那么就可通过 name.github.io/1,和 name.github.io/2 访问它们

      三、右键某个文件,选择【释放空间】,即可

    14. hhh hhh     Windows 7 /    QQ浏览器

      @LOGI可是我的右键没有释放空间这个选项,在网上搜索了一下很多人也有相同的问题,按照网上的方法也解决不了,大佬有没有什么好的解决方法?

    15. LOGI LOGI     Windows 10 /    Google Chrome

      @hhh右键本地电脑上存在的文件才有,并且此时 OneDrive 客户端应该是在后台运行的,不能退出。

      要是实在找不到,留下 QQ 我加你

  16. 红豆饼 红豆饼     Windows 7 /    Google Chrome

    登录完毕后无法跳转到 localhost,怎么办;会一直反复跳转

    显示这个:
    Error
    Please set the refresh_token in environments
    Get a refresh_token
    allow javascript

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @红豆饼浏览器地址栏结尾有个红色的感叹号,点击它,选择允许弹出式窗口

    2. LOGI LOGI     Android Pie /    Google Chrome

      @红豆饼localhost 改成 scf 网关地址

    3. chwl chwl     Android Pie /    Google Chrome

      @红豆饼去github下载最新版本,现在安装更简单了!

    4. LOGI LOGI     Windows 10 /    Google Chrome

      @红豆饼我更新了文章,你可以重新上传代码操作一遍

  17. QaQ QaQ     Windows 10 /    Google Chrome

    要是有搜索文件功能就好了

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @QaQ嗯,功能和 bug 反馈可以去作者 github

  18. cc cc     Windows 10 /    Google Chrome

    博主您好,有个问题请教一下。
    因为国内下载onedrive中文件的速度过慢,用纸飞机的话,应该是挂云函数的香港节点还是onedrive所在地的节点

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @cc用 idm xdown motrix adm 等多线程工具下载,一般能跑 6m/s 以上的速度。实在要挂梯,当然是挂 onedrive 所在地,具体可以复制下载链接的域名,ping 一下得到它的 ip ,然后搜索这个 ip 的所在地

  19. 小屁孩 小屁孩     Windows 7 /    Google Chrome

    有没有腾讯云+其他云盘的解决方法

    1. LOGI LOGI     Android Pie /    Google Chrome

      @小屁孩大佬给写一个就有了

    2. 小屁孩 小屁孩     Windows 7 /    Google Chrome

      @LOGIemmm

    3. 小屁孩 小屁孩     Windows 7 /    Google Chrome

      @LOGI我还以为这个是你写的呢

    4. LOGI LOGI     Windows 10 /    Google Chrome

      @小屁孩朋友写的,有我 0.5% 代码。不过我也完整写了一个,https://logi.ml/front-end/scf-fodi.html

    5. 小屁孩 小屁孩     Windows 7 /    Google Chrome

      @LOGI你是不是搞错了链接了

    6. LOGI LOGI     Windows 10 /    Google Chrome

      @小屁孩没有,是不是你没仔细看@(滑稽)

    7. 小屁孩 小屁孩     Windows 7 /    Google Chrome

      @LOGIemmm

  20. yxwgood yxwgood     Windows 10 /    Google Chrome

    在线观看有些视频没有声音

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @yxwgood浏览器只支持有限音频格式,我所知道的有 AAC 和 AC3,DTS 和 DDP 等都无法解码。

0:00