格兰蒂协会

 找回密码
 加入格兰蒂后宫
快捷导航
搜索
查看: 385|回复: 5
收起左侧

[编程开发] Sakura Frp OpenAPI 开发文档

[复制链接]

14

主题

56

帖子

302

积分

Lv.7

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

积分
302
QQ
发表于 2018-8-14 23:33:40 | 显示全部楼层 |阅读模式
其他游戏
帖子内容: 作品发布
原创度: 原创
原帖地址: https://blog.kasuganosora.cn/2018/08/11/744

你好像忘了登录了...

您需要 登录 才可以下载或查看,没有帐号?加入格兰蒂后宫

x
OpenAPI 是 Sakura Frp 新推出的开放登录平台 API,任何人都可以申请,通过 OpenAPI 你可以轻松对接自己的网站,实现使用 Sakura Frp 账号登录。

源站要求
  • 需要 HTTPS 支持,OpenAPI 要求源站强制启用 SSL 以保证安全。
  • PHP 需要开启 OpenSSL 模块

申请 OpenAPI 方法
  • 打开 Sakura Frp (https://www.natfrp.org/)
  • 登录你的 Sakura Frp 账号
  • 点击左侧 “账号安全”
  • 修改右侧设置,填写源站地址,以及源站 token,并选择启用 OpenAPI
  • 修改代码,接入 OpenAPI

OpenAPI 简单对接教程

配置好源站信息以后,开始修改自己网站的代码
首先,在自己网站根目录新建文件夹 openapi


                               
登录/注册后可看大图

进入文件夹,新建文件 index.php,输入以下内容
  1. <?php
  2. // 引用 AES 加密
  3. $aes = new AES();
  4. // 定义源站信息
  5. define('SOURCE_SITE', 'test.example.com');    // 你的源站地址
  6. define('OPENAPI_TOKEN', md5('Your token'));    // 你的 token

  7. // 如果客户端请求使用 Sakura Frp 进行登录
  8. if(isset($_GET['action']) && $_GET['action'] == 'location') {
  9.     $data = Array(
  10.         'timestamp' => Intval(date("YmdHi"))
  11.     );
  12.     $data = urlencode($aes->encrypt(json_encode($data), substr(md5(OPENAPI_TOKEN), 0, 16), OPENAPI_TOKEN));
  13.     Header("Location: https://openid.natfrp.org/?src=" . SOURCE_SITE . "&data={$data}");
  14.     exit;
  15. }

  16. // 登陆成功后,OpenAPI 返回数据
  17. if(isset($_GET['data'])) {
  18.     $data = json_decode($aes->decrypt($_GET['data'], substr(md5(OPENAPI_TOKEN), 0, 16), OPENAPI_TOKEN), true);
  19.     if(!$data) {
  20.         echo "Data invalid";
  21.         exit;
  22.     } else {
  23.         // 验证时间戳,误差允许在 1 分钟以内
  24.         if($data['timestamp'] !== Intval(date("YmdHi"))) {
  25.             echo "Time stamp invalid";
  26.             exit;
  27.         } else {
  28.             // 验证成功,将 OpenAPI 返回的用户名和邮箱赋值给变量
  29.             $username = $data['username'];
  30.             $email = $data['email'];
  31.             // 接下来任由发挥想象,例如
  32.             // SESSION_START();
  33.             // $_SESSION['username'] = $username;
  34.         }
  35.     }
  36. }

  37. // AES-256-CFB 加密类
  38. class AES {
  39.     public function encrypt($str, $localIV, $encryptKey) {
  40.         return openssl_encrypt($str, 'AES-256-CFB', $encryptKey, 0, $localIV);
  41.     }
  42.     public function decrypt($str, $localIV, $encryptKey) {
  43.         return openssl_decrypt($str, 'AES-256-CFB', $encryptKey, 0, $localIV);
  44.     }
  45. }
复制代码
修改顶部源站地址为自己的网站地址,源站 token 则是你之前在 Sakura Frp 后台填写的 OpenAPI token。
配置成功后,访问:https://www.你的网站.com/openapi/?action=location 将会跳转到 OpenAPI 登录页面,登录成功后,将会跳转回你的网站,解密 GET 中的 data 即可得到用户名和邮箱,发挥你的创意进行修改,即可实现对接。
最后,在你的网页上添加一个按钮:
  1. <button class="btn btn-primary" onclick="location='/openapi/?action=location'">使用 Sakura Frp 账号登录</button>
复制代码
用户就可以通过点击按钮使用 Sakura Frp 账号登录了。

[img]https://panel.tcotp.cn/status/?name=Sakura 樱花服务器&port=22566&addr=play.

127

主题

829

帖子

1928

积分

管理员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
1928
发表于 2018-8-19 16:57:47 | 显示全部楼层
KasuganoSora 发表于 2018-8-19 13:24
点评...就是回复啊...

好吧
我仔细看了一下API
很赞
回复

使用道具 举报

14

主题

56

帖子

302

积分

Lv.7

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

积分
302
QQ
 楼主| 发表于 2018-8-19 13:24:41 | 显示全部楼层
吕乐乐 发表于 2018-8-16 14:10
噢,这样啊
话说,,这个点评怎么用
为啥我没有

点评...就是回复啊...
[img]https://panel.tcotp.cn/status/?name=Sakura 樱花服务器&port=22566&addr=play.
回复

使用道具 举报

127

主题

829

帖子

1928

积分

管理员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
1928
发表于 2018-8-16 14:10:38 | 显示全部楼层
KasuganoSora 发表于 2018-8-16 13:58
前两天网站升级,所有客户端都强制被关闭了

噢,这样啊
话说,,这个点评怎么用
为啥我没有

点评

点评...就是回复啊...  详情 回复 发表于 2018-8-19 13:24
回复

使用道具 举报

14

主题

56

帖子

302

积分

Lv.7

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

积分
302
QQ
 楼主| 发表于 2018-8-16 13:58:04 | 显示全部楼层
吕乐乐 发表于 2018-8-15 19:59
呃。然而我用这个节点的时候经常,,,
CMD莫名消失

前两天网站升级,所有客户端都强制被关闭了
[img]https://panel.tcotp.cn/status/?name=Sakura 樱花服务器&port=22566&addr=play.
回复

使用道具 举报

127

主题

829

帖子

1928

积分

管理员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
1928
发表于 2018-8-15 19:59:24 | 显示全部楼层
呃。然而我用这个节点的时候经常,,,
CMD莫名消失

点评

前两天网站升级,所有客户端都强制被关闭了  详情 回复 发表于 2018-8-16 13:58
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入格兰蒂后宫

本版积分规则

手机版|小黑屋|格兰蒂协会 ( 吉ICP备17007736号-1 )

GMT+8, 2019-1-19 15:19

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表