Loading...

Sakura Frp OpenAPI 开发文档

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

源站要求

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

申请 OpenAPI 方法

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

OpenAPI 简单对接教程

配置好源站信息以后,开始修改自己网站的代码

首先,在自己网站根目录新建文件夹 openapi

进入文件夹,新建文件 index.php,输入以下内容

[code lang=”php”]<?php
// 引用 AES 加密
$aes = new AES();
// 定义源站信息
define(‘SOURCE_SITE’, ‘test.example.com’); // 你的源站地址
define(‘OPENAPI_TOKEN’, md5(‘Your token’)); // 你的 token

// 如果客户端请求使用 Sakura Frp 进行登录
if(isset($_GET[‘action’]) && $_GET[‘action’] == ‘location’) {
$data = Array(
‘timestamp’ => date(“YmdHi”)
);
$data = urlencode($aes->encrypt(json_encode($data), substr(md5(OPENAPI_TOKEN), 0, 16), OPENAPI_TOKEN));
Header(“Location: https://openid.natfrp.org/?src=” . SOURCE_SITE . “&data={$data}&referer=” . urlencode($_SERVER[“HTTP_REFERER”]));
exit;
}

// 登陆成功后,OpenAPI 返回数据
if(isset($_GET[‘data’])) {
$data = json_decode($aes->decrypt($_GET[‘data’], substr(md5(OPENAPI_TOKEN), 0, 16), OPENAPI_TOKEN), true);
if(!$data) {
echo “Data invalid”;
exit;
} else {
// 验证时间戳,误差允许在 1 分钟以内
if($data[‘timestamp’] != date(“YmdHi”)) {
echo “Time stamp invalid”;
exit;
} else {
// 验证成功,将 OpenAPI 返回的用户名和邮箱赋值给变量
$username = $data[‘username’];
$email = $data[’email’];
// 接下来任由发挥想象,例如
SESSION_START();
$_SESSION[‘user’] = $username;
$_SESSION[‘mail’] = $email;
// 跳转回网站
if($_GET[‘referer’] !== “”) {
Header(“Location: {$_GET[‘referer’]}”);
} else {
Header(“Location: https://” . SOURCE_SITE);
}
}
}
}

// AES-256-CFB 加密类
class AES {
public function encrypt($str, $localIV, $encryptKey) {
return openssl_encrypt($str, ‘AES-256-CFB’, $encryptKey, 0, $localIV);
}
public function decrypt($str, $localIV, $encryptKey) {
return openssl_decrypt($str, ‘AES-256-CFB’, $encryptKey, 0, $localIV);
}
}[/code]
修改顶部源站地址为自己的网站地址,源站 token 则是你之前在 Sakura Frp 后台填写的 OpenAPI token。

配置成功后,访问:https://www.你的网站.com/openapi/?action=location 将会跳转到 OpenAPI 登录页面,登录成功后,将会跳转回你的网站,解密 GET 中的 data 即可得到用户名和邮箱,发挥你的创意进行修改,即可实现对接。

最后,在你的网页上添加一个按钮:

[code lang=”html”]<button class=”btn btn-primary” onclick=”location=’/openapi/?action=location'”>使用 Sakura Frp 账号登录</button>[/code]

用户就可以通过点击按钮使用 Sakura Frp 账号登录了。

3 条评论

  • Chenwe_i_lin

    2018年8月22日

    OAtuh?

    Reply
    • 耗子

      2018年11月16日

      那是什么?我只听说过OAuth

      Reply
  • 耗子

    2018年10月1日

    我准备接入这个API了,嘻嘻嘻

    Reply

发表评论

》表情