跳转至

文档说明

介绍

本文档旨在合理合规的开发和使用粼光接口API,通过本手册,您可以更好的使用相关api,甚至您可以使用api开发粼光第三方应用。

更新

最近更新:2024/7/7

反馈与修正

开源与使用

常见问题

更新应用的逻辑和前端处理

由于POST传入参数与新增应用完全相同,所以推荐前端按照:调用 [[#搜索应用数据]]->使用form表单控件默认值功能展示->用户对需要更新的值进行修改->调用[[#更新应用]]来进行应用更新。应用更新的逻辑是在数据库中新增一条应用,通过包名与之前上传的应用关联,通过AppInerVersion值自增来判断更新,此值无需也不能自行填写或修改。请注意,若数据库中未存在包名相同的应用或者包名相同的应用未通过审核,将无法调用此接口进行更新,此情况返回值为-4。

用户身份认证更新

粼光默认不会对已登录用户做退出处理,除非您手动退出登录,无论登录多久都不会在浏览器清除身份信息。所以在进行必要需进行SESSION更新。详见:[[#更新用户登录态]]

数据库数据说明

app_data表

此表是粼光所包含的所有应用数据

列名 数据类型 长度 默认值 是否为主键 是否非空 是否自增 描述
AppId int 是 是 是 数据库索引
AppName varchar 24 否 是 否 应用名称
AppDownloadUrl varchar 64 否 否 否 应用下载地址
AppVersion varchar 24 否 是 否 应用当前版本名
AppNewVersion varchar 24 否 否 否 应用最新版本名
AppOneSentenceIntroduction varchar 128 否 是 否 应用一句话介绍(Slogan)
AppIntroduction text 否 是 否 应用介绍
AppLogoUrl text 否 是 否 应用Logo图片
AppIntroductionPictureUrl text 否 否 否 应用介绍图片
AppUpdateIntroduction text 否 否 否 应用新版本更新介绍
AppInerVersion varchar 64 0 否 是 否 应用内部版本号(用于更新),仅在粼光存在一版则为0,每次更新迭代自增1
AppUpUserId varchar 64 0 否 是 否 应用上传者唯一身份标识,0为系统默认,非0为对应用户
AppDeveloper varchar 128 0 否 否 否 应用开发者名称
AppDeveloperUrl varchar 128 0 否 否 否 应用开发者主页链接
AppPackageName varchar 64 否 是 否 应用包名(应用唯一身份标识)
AppType varchar 64 否 否 否 应用分类
IsAvailable int 0 否 是 否 应用是否可被检索(用于认证开发者上传的应用管理与检查)0为无法检索,1为可检索
OnloadDate datetime 否 否 否 应用上传日期
UpdateDate datetime 否 否 否 应用更新日期

user表

此表是粼光所包含的所有用户数据

列名 数据类型 长度 默认值 是否为主键 是否非空 是否自增 描述
id int 是 是 是 用户唯一身份标识
username varchar 64 否 是 否 用户昵称(2-6合法字符)
password varchar 64 否 是 否 用户密码(有加密)
phone varchar 64 否 否 否 用户手机号(预留)
qq varchar 64 否 是 否 用户QQ号(用于邮件推送和头像调用)
status int 0 否 是 否 用户身份,0为普通用户,1为管理员,2为认证开发者
create_date datetime 否 否 否 用户注册日期
rss int 0 否 否 否 用户接受邮件推送频率,0为接收全部推广邮件(预留)

log_login表

此表是粼光登录日志

列名 数据类型 长度 默认值 是否为主键 是否非空 是否自增 描述
id int 是 是 是 数据库索引
userid int 否 是 否 登录用户id
ip varchar 32 否 否 否 用户登录ip
create_date datetime 否 否 否 用户登录日期

前端接口调用参考

构造POST请求

以下是一个前端通过fetch构造POST请求向后端发送数据的参考代码,一般情况下推荐使用json格式传递数据,首先使用JSON.stringify(字典)函数构造json字符串变量 data_post,构造fetch请求将data_post传递给api,api会返回一个json格式的返回参数,可以通过data.code访问请求标识码,data.message获取信息,data.data获取返回数据等。

<script>
  var data_post = JSON.stringify({ a: '1', b: '2' });
  // fetch请求
  var url = "../api/api_addApp.php";
  fetch(url, {
    method: "POST",
    body: data_post,
  })
    .then(response => response.json())
    .then(data => {
      //console.log(data);
      if (data.code !== 1) {
        //未能成功
        alert(data.message);
        console.log(data);
      } else {
        //成功请求
        alert('ok');
      }
    })
    .catch(error => {
      //异常处理
      console.log("error: ", error);
    })
</script>

构造GET请求

以下是一个前端通过fetch构造GET请求向后端请求数据的参考代码,与POST请求不同,使用fetch构造GET请求没有body体,只需要通过请求链接?请求参数=值&请求参数=值格式构造url即可,api会返回一个json格式的返回参数,可以通过data.code访问请求标识码,data.message获取信息,data.data获取返回数据等。

<script>
  var data_post = JSON.stringify({ key: '测试', type: 'AppName', format: 'json' });
  // fetch请求
  var url = "../api/api_searchApp.php?key=测试&type=AppName&format=json";
  fetch(url, {
    method: "GET",
  })
    .then(response => response.json())
    .then(data => {
      //console.log(data);
      if (data.code !== 1) {
        //未能成功
        alert(data.message);
        console.log(data);
      } else {
        //成功请求
        alert('ok');
      }
    })
    .catch(error => {
      //异常处理
      console.log("error: ", error);
    })
</script>

接口调用手册

应用类

获取应用数据

描述

通过应用唯一数据库表示序号AppId请求到对应应用的全部数据。

调用地址

api/api_getAppData_AppId.php

参数传递

传入参数 传入方式 是否必须 数据类型 描述
AppId GET 是 int 应用在数据库中的序列标识
format GET 否 string 可填array使返回数据为array格式,未填写则返回数据为json格式

返回参数

返回参数 数据类型 描述
code int 获取成功为1,不成功为非1
message string 对应错误码的解释
data array 获取到应用的信息

调用示例

构造链接:

api/api_getAppData_AppId.php?AppId=1
返回数据:
Array
(
    [code] => 1
    [data] => Array
        (
            [0] => Array
                (
                    [AppId] => 1
                    [AppName] => 粼光
                    [AppDownloadUrl] => linlight.cn
                    [AppVersion] => 3.0
                    [AppNewVersion] => 3.0
                    [AppOneSentenceIntroduction] => 个人开发者交流平台
                    [AppIntroduction] => 粼光是一个基于个人应用分发的交流平台
                    [AppLogoUrl] => ./page/src/app_data/app_logo.png
                    [AppIntroductionPictureUrl] => 
                    [AppUpdateIntroduction] => 
                    [AppInerVersion] => 0
                    [AppUpUserId] => 0
                    [AppUniqueId] => 0
                    [AppType] => 
                )
        )
    [message] => Successful!
)

搜索应用数据

描述

通过关键字key、搜索方向type来在指定方向搜索应用,返回搜索到应用的全部信息(请注意:该API可能在未来会修改为返回搜索到应用的部分信息,比如:AppID、AppName等,而并非全部,请注意规避)。

调用地址

api/api_searchApp.php

参数传递

传入参数 传入方式 是否必须 数据类型 描述
key GET 是 string 关键词,支持模糊包含关系的模糊搜索
type GET 是 string 搜索方向(比如:应用名等)需要在下面数组中选择一项查找。array("AppId","AppName","AppDownloadUrl","AppVersion","AppNewVersion","AppOneSentenceIntroduction","AppIntroduction","AppLogoUrl","AppIntroductionPictureUrl","AppUpdateIntroduction","AppInerVersion","AppUpUserId","AppUniqueId","AppType")
format GET 否 string 可填array使返回数据为array格式,未填写则返回数据为json格式

返回参数

返回参数 数据类型 描述
code int 获取成功为1,不成功为非1
message string 对应错误码的解释
data array 获取到应用的信息

调用示例

构造链接:

api/api_searchApp.php?key=测试&type=AppName
返回数据:
Array
(
    [code] => 1
    [data] => Array
        (
            [0] => Array
                (
                    [AppId] => 2
                    [AppName] => 测试应用
                    [AppDownloadUrl] => test.com
                    [AppVersion] => 1.0
                    [AppNewVersion] => 2.0
                    [AppOneSentenceIntroduction] => TEST TEXT
                    [AppIntroduction] => INTRODUCTION TEXT
                    [AppLogoUrl] => ./test.png
                    [AppIntroductionPictureUrl] => 
                    [AppUpdateIntroduction] => 
                    [AppInerVersion] => 0
                    [AppUpUserId] => 0
                    [AppUniqueId] => 1
                    [AppType] => TESTTYPE
                )
            [1] => Array
                (
                    [AppId] => 3
                    [AppName] => 测试应用(NEW)
                    [AppDownloadUrl] => test_new.com
                    [AppVersion] => 2.0
                    [AppNewVersion] => 2.0
                    [AppOneSentenceIntroduction] => TEST TEXT
                    [AppIntroduction] => INTRODUCTION TEXT
                    [AppLogoUrl] => ./test.png
                    [AppIntroductionPictureUrl] => 
                    [AppUpdateIntroduction] => 
                    [AppInerVersion] => 0
                    [AppUpUserId] => 0
                    [AppUniqueId] => 1
                    [AppType] => TESTTYPE
                )
        )
    [message] => Successful!
)

新增应用

描述

在认证开发者或管理员身份下可用,在数据库中新添加一个应用。认证开发者上传后将不会直接在列表页面显示,需等待管理员审核后显示,管理员身份添加的应用将会直接显示。

调用地址

api/api_addApp.php

参数传递

传入参数 传入方式 是否必须 数据类型 描述
AppName POST 是 string(json) 应用名称
AppDownloadUrl POST 是 string(json) 应用下载地址
AppVersion POST 是 string(json) 应用当前版本名
AppNewVersion POST 是 string(json) 应用最新版本名
AppOneSentenceIntroduction POST 是 string(json) 应用一句话介绍(Slogan)
AppIntroduction POST 是 string(json) 应用介绍
AppLogoUrl POST 是 string(json) 应用Logo图片
AppIntroductionPictureUrl POST 是 string(json) 应用介绍图片
AppUpdateIntroduction POST 否 string(json) 应用新版本更新介绍
AppDeveloper POST 否 string(json) 应用开发者名称
AppDeveloperUrl POST 否 string(json) 应用开发者主页链接
AppPackageName POST 是 string(json) 应用包名(应用唯一身份标识)
AppType POST 否 string(json) 应用分类
format GET 否 string 可填array使返回数据为array格式,未填写则返回数据为json格式

返回参数

返回参数 数据类型 描述
code int 获取成功为1,不成功为非1
message string 对应错误码的解释
data array 空

调用示例

以下是一个前端页面像后端请求新增应用的参考示例,传递参数请使用字典转换json格式传递。

<script>
  var this_app_data = {
    AppName: '测试应用3',
    AppDownloadUrl: 'https://ceshi.com/test.apk',
    AppVersion: '1.0.0',
    AppNewVersion: '1.0.0',
    AppOneSentenceIntroduction: '测试应用3的一句话介绍',
    AppIntroduction: '测试应用3的详细介绍',
    AppLogoUrl: 'https://ceshi.com/test.png',
    AppIntroductionPictureUrl: 'https://ceshi.com/test.png',
    AppUpdateIntroduction: '测试应用3的更新介绍',
    AppPackageName: 'com.test.test',
    AppType: "TSET"
  };
  var data_post = JSON.stringify(this_app_data);
  // fetch请求
  var url = "../api/api_addApp.php";
  fetch(url, {
    method: "POST",
    body: data_post,
  })
    .then(response => response.json())
    .then(data => {
      //console.log(data);
      if (data.code !== 1) {
        alert(data.message);
        console.log(data);
        // location.reload();
      } else {
        alert('ok');
      }
    })
    .catch(error => {
      console.log("error: ", error);
    })
</script>

更新应用

描述

在认证开发者或管理员身份下可用,对数据库已有并且审核通过应用的应用进行更新。认证开发者上传后将不会直接在列表页面显示,需等待管理员审核后显示,管理员身份更新的应用将会直接显示。

调用地址

api/api_updateApp.php

参数传递

传入参数 传入方式 是否必须 数据类型 描述
AppName POST 是 string(json) 应用名称
AppDownloadUrl POST 是 string(json) 应用下载地址
AppVersion POST 是 string(json) 应用当前版本名
AppNewVersion POST 是 string(json) 应用最新版本名
AppOneSentenceIntroduction POST 是 string(json) 应用一句话介绍(Slogan)
AppIntroduction POST 是 string(json) 应用介绍
AppLogoUrl POST 是 string(json) 应用Logo图片
AppIntroductionPictureUrl POST 是 string(json) 应用介绍图片
AppUpdateIntroduction POST 否 string(json) 应用新版本更新介绍
AppDeveloper POST 否 string(json) 应用开发者名称
AppDeveloperUrl POST 否 string(json) 应用开发者主页链接
AppPackageName POST 是 string(json) 应用包名(应用唯一身份标识)
AppType POST 否 string(json) 应用分类
format GET 否 string 可填array使返回数据为array格式,未填写则返回数据为json格式

返回参数

返回参数 数据类型 描述
code int 获取成功为1,不成功为非1
message string 对应错误码的解释
data array 空

调用示例

由于POST传入参数与新增应用完全相同,所以推荐前端按照:调用 [[#搜索应用数据]]->使用form表单控件默认值功能展示->用户对需要更新的值进行修改->调用[[#更新应用]]来进行应用更新。应用更新的逻辑是在数据库中新增一条应用,通过包名与之前上传的应用关联,通过AppInerVersion值自增来判断更新,此值无需也不能自行填写或修改。请注意,若数据库中未存在包名相同的应用或者包名相同的应用未通过审核,将无法调用此接口进行更新,此情况返回值为-4。以下是一个前端页面像后端请求更新的参考示例,传递参数请使用字典转换json格式传递。

<script>
  var this_app_data = {
    AppName: '测试应用5(NEW)',
    AppDownloadUrl: 'https://ceshi.com/test.apk',
    AppVersion: '3.0.0',
    AppNewVersion: '3.0.0',
    AppOneSentenceIntroduction: '测试应用5的一句话介绍',
    AppIntroduction: '测试应用5的详细介绍',
    AppLogoUrl: 'https://ceshi.com/test.png',
    AppIntroductionPictureUrl: 'https://ceshi.com/test.png',
    AppUpdateIntroduction: '测试应用5的更新介绍',
    AppPackageName: 'com.test5.test',
    AppType: "TSET"
  };
  var data_post = JSON.stringify(this_app_data);
  // fetch请求
  var url = "../api/api_updateApp.php";
  fetch(url, {
    method: "POST",
    body: data_post,
  })
    .then(response => response.json())
    .then(data => {
      //console.log(data);
      if (data.code !== 1) {
        alert(data.message);
        console.log(data);
        // location.reload();
      } else {
        alert('ok');
      }
    })
    .catch(error => {
      console.log("error: ", error);
    })
</script>

用户类

用户注册

描述

注册一个粼光普通用户

调用地址

api/api_userSignIn.php

参数传递

传入参数 传入方式 是否必须 数据类型 描述
name POST 是 string(FormData) 2-6字符
qq POST 是 string(FormData) 不允许与数据库已存在账户重复
password POST 是 string(FormData) 英文大写、英文小写、标点、数字任选2
format GET 否 string 可填array使返回数据为array格式,未填写则返回数据为json格式

返回参数

返回参数 数据类型 描述
code int 获取成功为1,不成功为非1
message string 对应错误码的解释
data array 空

调用示例

以下是一个前端页面像后端请求注册的参考示例,传递参数请使用form表单组件格式传递。

    <form action=" " id="submit_form" method="post" style="margin-left: 5%;margin-right: 5%;"
      onsubmit="SubmitForm(event)">
      <div style="width:100%;">
        <span style="font-size:20px;">昵称:</sapn>
          <mdui-text-field label="请输入您的用户名" placeholder="请输入" style="width:80%" clearable type="text" name="name"
            id="name" class="text_box"></mdui-text-field>
      </div>
      <div style="width:100%;margin-top:20px;">
        <span style="font-size:20px;">账号:</sapn>
          <mdui-text-field label="请输入您的QQ号" placeholder="请输入" style="width:80%" clearable type="text" name="qq" id="qq" class="text_box"></mdui-text-field>
      </div>
      <div style="width:100%;margin-top:20px;">
        <span style="font-size:20px;">密码:</sapn>
          <mdui-text-field toggle-password label="请输入您的密码" placeholder="请输入" style="width:80%" clearable type="password" name="password" class="text_box"></mdui-text-field>
      </div>
      <mdui-button type="submit" value="注册" style="margin-top:20px;">注册</mdui-button>
    </form>
var form_data = new FormData(form);//form是一个表单组件
var url = "../api/api_userSignIn.php";
        fetch(url, {
          method: "POST",
          body: form_data //请前端使用表单体
        })
          .then(response => response.json())
          .then(data => {
            console.log(data);
            if (data.code !== 1) {
              alert(data.msg);
            } else {
              alert("注册成功");
            }
          })
          .catch(error => {
            console.log("error: ", error);
          })

用户登录

描述

粼光用户登录,登录后将会有SESSION信息

调用地址

api/api_userLogIn.php

参数传递

传入参数 传入方式 是否必须 数据类型 描述
qq POST 是 string(FormData)
password POST 是 string(FormData) 英文大写、英文小写、标点、数字任选2
format GET 否 string 可填array使返回数据为array格式,未填写则返回数据为json格式

返回参数

返回参数 数据类型 描述
code int 获取成功为1,不成功为非1
message string 对应错误码的解释
data array 空

调用示例

以下是一个前端页面像后端请求登录的参考示例,传递参数请使用form表单组件格式传递。

    <form action=" " method="post" style="margin-left: 5%;margin-right: 5%;" id="submit_form"
      onsubmit="SubmitForm(event)">
      <div style="width:100%;">
        <span style="font-size:20px;">账号:</sapn>
          <mdui-text-field label="请输入您的QQ号" placeholder="请输入" style="width:80%" clearable type="text" name="qq" class="text_box" value="<?php echo $qq ?>"></mdui-text-field>
      </div>
      <div style="width:100%;margin-top:20px;">
        <span style="font-size:20px;">密码:</sapn>
          <mdui-text-field toggle-password label="请输入您的密码" placeholder="请输入" style="width:80%" clearable type="password" name="password" class="text_box"></mdui-text-field>
      </div>
      <mdui-button type="submit" value="提交" style="margin-top:20px;">登录</mdui-button>
    </form>
// fetch请求
          var form_data = new FormData(form);//form是一个表单组件
          var url = "../api/api_userLogIn.php";
          fetch(url, {
            method: "POST",
            body: form_data
          })
            .then(response => response.json())
            .then(data => {
              console.log(data);
              if (data.code !== 1) {
                alert(data.msg);
              } else {
                // alert("登录成功");
              }
            })
            .catch(error => {
              console.log("error: ", error);
            })

退出登录

描述

粼光用户退出登录

调用地址

api/api_userLogOut.php

参数传递

传入参数 传入方式 是否必须 数据类型 描述
format POST 否 string 可填array使返回数据为array格式,未填写则返回数据为json格式

返回参数

返回参数 数据类型 描述
code int 获取成功为1,不成功为非1
message string 对应错误码的解释
data array 空

更新用户登录态

描述

更新用户身份认证SESSION

调用地址

api/api_updateSession.php

参数传递

传入参数 传入方式 是否必须 数据类型 描述
format POST 否 string 可填array使返回数据为array格式,未填写则返回数据为json格式

返回参数

返回参数 数据类型 描述
code int 获取成功为1,不成功为非1
message string 对应错误码的解释
data array 空

工具类

发送邮件

描述

使用粼光平台给指定邮箱或用户发送邮件(内部API,暂时不对外开放)。