MENU

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

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

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

演示地址

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

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

已有 235 条评论
  1. 单纯 单纯     Windows 10 /    Google Chrome

    大佬,我又来了,这个建立的网盘,只能单文件上传,请问怎么弄才能文件夹上传呢(不喜欢用onedrive)
    谢谢了

  2. 单纯 单纯     Windows 10 /    Google Chrome

    大佬您好,我在创建触发管理的时候,显示没有权限,这该怎么解决?

    1. 单纯 单纯     Windows 10 /    Google Chrome

      @单纯在评论区看到了,thanks 楼主

  3. Aloner Aloner     Windows 7 /    Google Chrome

    问一下哦,这个能用来续e5嘛::quyin:doubt::

    1. Aloner Aloner     Windows 7 /    Google Chrome

      @Aloner噢,在评论区看到了::quyin:fue::

  4. Abyss Abyss     Windows 10 /    Google Chrome

    唉嘿嘿嘿,已经弄好啦,谢谢大佬,不过我想问问,可以新建账号吗

  5. 临魔 临魔     Windows 10 /    Google Chrome

    上传的时候有两个速度,一个即时速度,一个平均速度,哪个才是我的上传速度?

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @临魔本文仅讨论安装问题呢

  6. 沐湫 沐湫     Windows 10 /    Google Chrome

    这个scf是不用收费的吗?还有API现在会收费吗

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @沐湫阅读文章开头

    2. 沐湫 沐湫     Windows 10 /    Google Chrome

      @LOGI也就是说我正常上传下载文件是不会产生费用的吗

    3. LOGI LOGI     Windows 10 /    Google Chrome

      @沐湫会,简单说,一人用一月不超 1 元。既然如此关心,认真阅读文章开头。

  7. 临沭 临沭     Windows 10 /    Google Chrome

    文件上传后变成了一个.tmp的文件是怎么回事?

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @临沭一切功能问题请到原作者github反馈,本文仅讨论安装问题

    2. 临沭 临沭     Windows 10 /    Google Chrome

      @LOGI问题解决了

  8. 临沭 临沭     Windows 10 /    Google Chrome

    单次最大能上传多大的文件?

  9. 临沭 临沭     Windows 10 /    Google Chrome

    为什么我点了上传后按键就没了?也没法上传?

    1. 临沭 临沭     Windows 10 /    Google Chrome

      @临沭解决了,我没看到左边的选择文件。。。

  10. 淡淡 淡淡     Windows 10 /    Google Chrome

    触发方式完成后点击保存没有出现访问路径,倒是提示
    操作没有权限([TencentCloudSDKError] Code=InternalError.GetRoleError, Message=[QC_ STS] rol
    这该怎么解决?

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @淡淡重新登录腾讯云SCF会弹出授权对话框,根据提示授权

  11. 一纸荒年 一纸荒年     Windows 10 /    Google Chrome

    我听别人说好像新的scf不能续费了

    1. 一纸荒年 一纸荒年     Windows 10 /    Google Chrome

      @一纸荒年博主能回答下吗

    2. LOGI LOGI     Windows 10 /    Google Chrome

      @一纸荒年E5续期和SCF没关系,只要调用微软API即可,所以新旧无区别

    3. 一纸荒年 一纸荒年     Windows 10 /    Google Chrome

      @LOGI那请问可以与其他调用API的程序一起用吗

    4. LOGI LOGI     Windows 10 /    Google Chrome

      @一纸荒年随便用

  12. 一纸荒年 一纸荒年     Windows 10 /    Google Chrome

    这种方法可以让E5续费吗?

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @一纸荒年可以

  13. 小南 小南     Android /    Google Chrome

    存储视频并且用这个教程调用,在线观看的时候,视频会出现比较卡顿的现象,甚至有时候直接返回提示要等待30秒的错误码。

    有没有解决办法?

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @小南运营商问题,没有办法,想折腾可以用服务器或 CF 反代

    2. 小南 小南     Android /    Google Chrome

      @LOGI刚刚解决了,套个CDN就行了@(吐舌)

  14. 倪殇秋雨 倪殇秋雨     Windows 7 /    Google Chrome

    那个函数代码的下载出现页面找不到了@(捂嘴笑)

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @倪殇秋雨直接点击,不要复制地址在新窗口打开

  15. jy0034 jy0034     Windows 10 /    Google Chrome

    触发方式界面,点访问路径出现{"errorCode":-1,"errorMessage":"Task timed out after 3 seconds"} 请问怎么解决啊

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @jy0034无详细信息,建议重新操作

  16. rainy rainy     Windows 10 /    Google Chrome

    大佬,我用xxx.github.io弄了个博客,然后用xxx.github.io/wp按教程弄了网盘,但是网盘跳转不了,之前有、只有网盘的使用用xxx.github,io可以正常跳转,请问我要怎么弄才对呢

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @rainy自己把 index.html 移动到 /wp/ 目录里

  17. 木岚画凉 木岚画凉     Windows 10 /    Google Chrome

    问下大佬,自定义域名中绑定的域名需要备案嘛???

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @木岚画凉地区选香港不用

  18. 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看到了,谢谢了!@(哈哈)

  19. 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. OvO OvO     Windows 10 /    Google Chrome

      @LOGI为啥我看不到 refresh_token,总是闪一下

    4. LOGI LOGI     Windows 10 /    Google Chrome

      @OvO世纪互联账号吗

  20. 张奇 张奇     Windows 10 /    Google Chrome

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

    1. LOGI LOGI     Windows 10 /    Google Chrome

      @张奇腾讯云问题,现在应该可以了

0:00