开发者接入文档

📝 1. 申请商户资格

联系 QQ: 1451606675 申请入驻,您将获得:

  • client_id:应用唯一标识
  • client_secret:应用密钥(请妥善保管,仅服务端使用)
  • 配置回调地址 redirect_uri:用户授权后跳回的网址,必须与申请时完全一致(包括协议、域名、路径)

🔗 2. 引导用户授权

将用户重定向到以下URL(GET请求):

https://zjinc.cn/l/index.php?action=authorize&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

参数说明:

  • client_id:您申请到的应用ID
  • redirect_uri:必须与注册时完全一致

用户同意授权后,平台会跳转回您的 redirect_uri 并携带一个 code 参数(例如 https://your-app.com/callback?code=xxx)。若用户拒绝,会携带 error=access_denied

🔄 3. 换取用户信息

用上一步获得的 code 调用 API 获取用户信息(POST请求,服务端调用,不可在前端暴露 secret)。

POST https://zjinc.cn/l/api.php?action=token
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&code=AUTHORIZATION_CODE

成功响应示例:

{
  "user_id": 123,
  "username": "zhangsan",
  "message": "success"
}

错误响应示例:

{"error":"invalid_grant","message":"授权码无效或已过期"}

常见错误码:

  • invalid_request:缺少必要参数
  • invalid_client:client_id 或 client_secret 错误
  • invalid_grant:授权码无效/过期(一次性使用)

⚡ 4. 实现一键登录

获得 user_idusername 后,您可以在您的应用中自动创建/登录该用户,完成“一键登录”。

PHP 示例代码:

<?php
$client_id = '您的client_id';
$client_secret = '您的client_secret';
$redirect_uri = '您的回调地址';

if (isset($_GET['code'])) {
    $code = $_GET['code'];
    $api_url = 'https://zjinc.cn/l/api.php?action=token';
    $postData = http_build_query([
        'client_id' => $client_id,
        'client_secret' => $client_secret,
        'code' => $code
    ]);
    $options = ['http' => ['header' => "Content-Type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => $postData]];
    $context = stream_context_create($options);
    $result = file_get_contents($api_url, false, $context);
    $user = json_decode($result, true);
    if (isset($user['user_id'])) {
        $_SESSION['user'] = $user; // 记录登录状态
        echo "登录成功,用户ID:".$user['user_id'];
    }
}
?>
<a href="https://zjinc.cn/l/index.php?action=authorize&client_id=<?= $client_id ?>&redirect_uri=<?= urlencode($redirect_uri) ?>">一键登录</a>

cURL 示例:

curl -X POST https://zjinc.cn/l/api.php?action=token \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "code=AUTHORIZATION_CODE"

📡 5. 数据是如何传输的?(OAuth2.0 原理简析)

本平台采用业界标准的 OAuth2.0 授权码模式,数据传递全程安全可控。以您的应用与指尖平台交互为例:

  • 步骤A:用户点击“一键登录”,您的应用将用户重定向至指尖平台授权页,此时只传递 client_idredirect_uri(不涉及敏感信息)。
  • 步骤B:用户在指尖平台登录并同意授权后,指尖平台通过浏览器重定向,将一次性授权码 code 传回您的回调地址(redirect_uri)。此过程在用户浏览器完成,code 对第三方不可见。
  • 步骤C:您的服务端使用 code 以及您的 client_secret 直接调用指尖平台 API(服务端对服务端),换取用户信息。该调用不经过用户浏览器,密钥永不暴露。

这种模式与微信、QQ、支付宝等主流第三方登录完全一致,既保证了用户数据安全,也防止了应用密钥泄露的风险。

安全提醒:
  • 绝对不要将 client_secret 暴露在前端代码中。
  • 授权码 code 只能使用一次,有效期10分钟。
  • 回调地址必须使用 HTTPS(生产环境)以确保安全。

API 端点: /l/api.php?action=token | 技术支持: 指尖开放平台