免登接口

接口提供方

该接口由燃豆开放给开发者

使用场景

用户在打开积分俱乐部前需要通过燃豆的登录鉴权,该鉴权操作需要开发者在自己的服务端完成

业务流程说明

免登接口流程

  1. 用户在开发者的客户端点击积分俱乐部入口按钮请求(该地址由开发者自行配置,且该地址为开发者自己的接口);
  2. 开发者服务端在接收到用户要求打开积分俱乐部接口时向燃豆发送请求获取积分俱乐部地址,并携带必要信息,如用户标志(必须唯一)、需要打开的积分俱乐部编号、用户当前剩余积分等;
  3. 燃豆在接收到开发者服务端获取免登地址的请求后记录下相关用户信息,并把登录地址返回给开发者服务端;
  4. 开发者服务端在接收到免登地址后给用户重定向(302)到积分俱乐部的页面或把地址给到客户端,由客户端本地打开该地址;

参数说明

参数是否必须类型[长度限制]说明
uidstring[5,64]唯一的用户标志,由开发者自行生成,请务必确保每个用户的标志唯一且同个用户每次生成的uid一致,游客账户请传:guest
mall_nostring[6,6]积分俱乐部的唯一编号,由燃豆在俱乐部创建时生成,表示用户需要登录的俱乐部,可在燃豆后台中获取,如JF_001
creditsint用户当前积分数,必须大于或等于0,游客账户传0
gradeint用户的会员等级,默认为1(即普通用户,基础版俱乐部可忽略该参数),会员等级相关内容请查看
redirectstring[0,128]需要跳转的页面地址,以“/”开头,默认为“/”,即积分俱乐部首页,更多关于redirect参数请查看

注意事项

  1. 请注意燃豆积分商城网页地址无法直接打开(游客登录也不行),必须通过免登接口获取登录地址的方式来获取可使用的地址;
  2. 如需跳转到积分商城中的指定页,请使用该接口中redirect参数来实现。

返回值示例

正确返回值(http返回码为200)


{
    url: ""   // 即需要重定向的地址
}

错误返回值(http返回码为非200)

{
    code: 100001,
    error: ""
}

代码示例

PHP


use Randou\Exception\RdException;
use Randou\RdClient;
use Randou\RdClientBuilder;

$appid = 'aaaaaaaaaaaaaaaaaaaaaaaa';
$appsecret = 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb';
$params = [
    'uid'     => $uid,
    'mall_no' => 'JF_001',
    'credits' => 11111,
    'grade'   => 2,
];

try {
    $client = RdClientBuilder::getClient($appid, $appSecret);
    // 切换到沙箱环境
    // $client->setDebug(true);

    $result = $client->fetchMallDst($params)->getDataSet();
} catch (RdException $e) {
    print_r($e);
    return;
}

return redirect()->away($result['url']);

JAVA


import com.randou_tech.model.FreeLogin;
import com.randou_tech.request.FreeLoginDstRequest;
import com.randou_tech.result.Result;

String appid = "aaaaaaaaaaaaaaaaaaaaaaaa";
String appsecret = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";

FreeLoginDstRequest request = new FreeLoginDstRequest();
request.setUid("aaaaaaa").setMallNo("JF_001").setCredits(24999).setGrade(2).setRedirect("/");
RdClient rdClient =  ClientBuilder.build(appid, appsecret);

// 切换到沙箱环境
// rdClient.setDebug(true);

try {
    Result<FreeLogin> hr = rdClient.getFreeLoginDstRequest(request);

    if (hr.isSuc()) {
        System.out.println(hr.getData().getDst()); // 打印可登录的目标地址
    } else {
        System.out.println(hr.getError());
    }
} catch (RdException e) {
    e.printStackTrace();
}