跳转至

文档说明

介绍

本文档旨在合理合规的开发和使用粼光接口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,暂时不对外开放)。