1、引入jssdk

config, XMLY, XMplayer  喜马拉雅sdk封装好的

<script src="https://s1.xmcdn.com/yx/web-jssdk/last/dist_cdn/1.3.4/xmsdk.min.js"></script>

2、初始化(授权登录、免登陆)

config({app_key: '2e*****1', // 必传,官方提供的 app_key:b617866c20482d133d5de66fceb37da3 仅供测试,有调用次数限制。//get_access_token: getAccessToken, // 标准登录授权,必须传 get_access_token 参数,值为 js 函数,和 sig_url 互斥device_id: XMLY.getDeviceId(),sig_url: 'http******/xmly/jssdk.php', // 免登录授权,必须传 sig_url,和 get_access_token 互斥timeout: 10 * 1000,debug: true,
})
that.xmly = new XMLY()// 获取访问令牌 access_token,函数的返回值为字符串(即:access_token 的值)
function getAccessToken() {// 书写授权逻辑// 确保返回有效的 access_token 值return 'b7a259c1864cc659ddfdd07910dc75a8' // return 返回有效的 access_token 值
}

免登陆 jssdk.php  获取前端数据进行数据加密回传,喜马拉雅sdk自行获取。

<?php/*** author : zhw * 2020-03-03 * 喜马拉雅jssdk认证接口*/
header('Content-Type:application/json; charset=utf-8');
header('Access-Control-Allow-Origin:*');
define("CLIENT_ID", "2e********751");
define("CLIENT_SECRET", "a5b******51");
define("CLIENT_STATIC_KEY", "g***7P");
$params = $_POST['params'];
$nonce = isset($_POST['nonce']) ? $_POST['nonce'] : "";
$device_id = isset($_POST['device_id']) ? $_POST['device_id'] : "";
$params_arr = json_decode($params, true);
$sig = createSig($params_arr);
$d = array('code' => 1,'message' => "success",'signature' => $sig
);
echo json_encode($d);/*** sig 生成*/
function createSig($data)
{ksort($data);$parme = "";foreach ($data as $k => $v) {$parme .= "$k=$v&";}$parme = trim($parme, '&');$str = base64_encode($parme);$hashKey = CLIENT_SECRET;$sigStr = md5(hash_hmac('sha1', $str, $hashKey, true));return $sigStr;
}

标准登录  用户需要调用喜马拉雅登录页面二次跳转  回传地址oauth.php  获取token

<?php/*** author : zhouhongwei * 2020-03-03 * 喜马拉雅认证接口*/
header('Content-Type:application/json; charset=utf-8');define("CLIENT_ID", "2e***51");
define("CLIENT_SECRET", "a5***1");
define("CLIENT_STATIC_KEY", "gu**P");
$backurl = $_GET['state'];
$code = isset($_GET['code']) ? $_GET['code'] : "";
$device_id = isset($_GET['device_id']) ? $_GET['device_id'] : "";
if (!$code || !$device_id) {die("参数错误,请联系管理员");
}
$data = array('client_id' => CLIENT_ID,'client_secret' => CLIENT_SECRET,'device_id' => $device_id,'grant_type' => 'authorization_code','code' => $code,'redirect_uri' => 'http://w***y/oauth.php'
);$xmly_url = 'https://api.ximalaya.com/oauth2/v2/access_token';
$res = curl($xmly_url, $data);
var_dump($res);/*** curl 方法* @param String $url * @param Array $data* @return $tmpInfo*/function curl($url, $data = null)
{$ch = curl_init();$header = array("Content-Type:application/x-www-form-urlencoded");curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_AUTOREFERER, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$tmpInfo = curl_exec($ch);if (curl_errno($ch)) {return curl_error($ch);}curl_close($ch);return $tmpInfo;
}/*** createUrl 生成请求连接* @param String $url * @param Array $data* @return $tmpInfo*/
function createUrl($o_url, $data)
{$url = "https://api.ximalaya.com{$o_url}?";$rand_only = time() . rand(1, 9999);$data['app_key']            = CLIENT_ID;$data['client_os_type']     = 4;                               //客户端系统类型,固定值$data['nonce']              = (string) $rand_only;             //设备唯一码$data['timestamp']          = getMillisecond();                 //毫秒级别时间戳$data['server_api_version'] = '1.0.0';                         //服务器端API版本号//生成signksort($data);$parme = "";foreach ($data as $k => $v) {$parme .= "$k=$v&";}$parme = trim($parme, '&');$str = base64_encode($parme);$hashKey = CLIENT_SECRET . CLIENT_STATIC_KEY;$sigStr = "&sig=" . md5(hash_hmac('sha1', $str, $hashKey, true));$url .= $parme . $sigStr;return $url;                                               //生成的url的timestamp 标签被html页面转译了 如果是用浏览器测试 记得修改一下这个标签                           }/*** 时间戳 - 精确到毫秒* @return float*/
function getMillisecond()
{list($t1, $t2) = explode(' ', microtime());return (float) sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
}

3、调接口

<!doctype html>
<html><head><meta charset="utf-8" /><meta name="format-detection" content="telephone=no" /><meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0" /><script src="jquery_172.js" language="javascript"></script><script src="https://s1.xmcdn.com/yx/web-jssdk/last/dist_cdn/1.3.4/xmsdk.min.js"></script><script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script><title>喜马拉雅JSSDK接入</title><style type="text/css"></style>
</head><body><div id="main"><div><h4>分类列表</h4><div style="width: 160px; float: left;" v-for="item in categoriesArr">{{item.id}}:{{item.category_name}}<img style="width: 20px;" :src="item.cover_url_small" /></div></div></div>
</body>
<script type="text/javascript">const xmly_did = "XIMALAYA_DEVICEID"const { config, XMLY, XMplayer } = window.xmsdkvar main = new Vue({el: '#main',data: {user_id: Number,categoriesArr: Object},created() {var that = this;// // 在尽可能早的时机执行 configconfig({app_key: '2e8******b751', // 必传,官方提供的 app_key:b617866c20482d133d5de66fceb37da3 仅供测试,有调用次数限制。//get_access_token: getAccessToken, // 标准登录授权,必须传 get_access_token 参数,值为 js 函数,和 sig_url 互斥device_id: XMLY.getDeviceId(),sig_url: 'http://****/jssdk.php', // 免登录授权,必须传 sig_url,和 get_access_token 互斥timeout: 10 * 1000,debug: true,})that.xmly = new XMLY()},beforeMount() {var that = thisthat.getCategoriesList()},methods: {getCategoriesList() {var that = this// 创建实例const url = 'https://api.ximalaya.com/categories/list'// 获取分类列表that.xmly.get(url).then(res => {if (res.code === 0) {// 成功逻辑(仅成功时 code 为 0)console.log(res)that.categoriesArr = res.data}// code 可能的值有:0、-1、-2、-3、-4}).catch(error => {// 为了更易用,SDK内部对请求的错误进行了捕获、分类,然后走的是 resolve// 所以,开发者调用 API 时基本不需要 catch console.log(error)}).finally(() => {// 其它})}}})//保存deviceIdvar deviceId = getCookie(xmly_did)if (!deviceId) {const deviceId = XMLY.getDeviceId()setCookie(xmly_did, deviceId, 365)console.log(deviceId)}// // 创建播放器实例const player = new XMplayer({playlist: [182847535, 197491263, 183339305, 195901119] // 必传参数})player.play()//获取url参数function get_query_string(name) {var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");var r = window.location.search.substr(1).match(reg); //search,查询?后面的参数,并匹配正则if (r != null) return decodeURI(r[2]);return null;}//设置cookiefunction setCookie(cname, cvalue, exdays) {var d = new Date();d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);var expires = "expires=" + d.toUTCString();document.cookie = cname + "=" + cvalue + "; " + expires;}//获取cookiefunction getCookie(cname) {var name = cname + "=";var ca = document.cookie.split(";");for (var i = 0; i < ca.length; i++) {var c = ca[i];while (c.charAt(0) == " ") c = c.substring(1);if (c.indexOf(name) != -1) {return c.substring(name.length, c.length);}}return "";}//清除cookiefunction clearCookie(cname) {this.setCookie(cname, "", -1);}
</script></html>

喜马拉雅数据接口 JSSDK API 接入 demo WEB版 标准登录 、免登陆相关推荐

  1. php采集喜马拉雅,喜马拉雅数据 JSSDK API 接入 demo WEB版 标准登录 、免登陆

    1.引入jssdk config, XMLY, XMplayer  喜马拉雅sdk封装好的 2.初始化(授权登录.免登陆) config({ app_key: '2e*****1', // 必传,官方 ...

  2. php采集喜马拉雅,接入喜马拉雅数据 JSSDK API demo WEB版 标准登录 、免登陆

    1.引入jssdk config, XMLY, XMplayer 喜马拉雅sdk封装好的 2.初始化(授权登录.免登陆) config({ app_key: '2e*****1', // 必传,官方提 ...

  3. demo对接php,喜马拉雅数据API 接入 demo PHP版 API

    记录一下使用经验,常规参数封装使用. API接口版 具体操作类XmlyApi.php 示例,更多需求可前往喜马拉雅官方文档查询,调用方法同理. /** * author : zhw * 2020-03 ...

  4. 【分享】星图地球数据云影像图API接入指南

    星图地球数据云(GEOVIS Earth Datacloud)为广大用户提供高品质.高可靠的在线时空数据云服务,极大降低用户的时空数据获取门槛和使用成本,为数字化世界构建提供强有力的数据基座. 今天我 ...

  5. 微博基础数据接口 (Rest API)

    微博基础数据接口 (Rest API) 获取下行数据集(timeline)接口 statuses/public_timeline 获取最新的公共微博消息 statuses/friends_timeli ...

  6. 喜马拉雅数据接口 接入 demo PHP版 API

    记录一下使用经验,常规参数封装使用. API接口版 具体操作类XmlyApi.php 示例,更多需求可前往喜马拉雅官方文档查询,调用方法同理. <?php/*** author : zhw* 2 ...

  7. 全国车辆违章查询数据接口文档及demo

    简介 聚合数据全国车辆违章数据接口,目前已经支持300个左右的城市违章查询,已连接上万个APP.方便有车一族随时了解自己是否有过交通违章,避免因遗忘或逾期处理违章罚单而造成的不必要损失. API参考文 ...

  8. [Android/安卓]Google登录接口之Api接入

    目录 1.基础配置 2.GoogleLogInImpl(登录接口实现类) 3.GoogleLogIn(实现类接口) 4.GoogleCallback(登录授权回调接口) 5.GoogleBuild(构 ...

  9. 使用聚合数据短信API测试(短信验证登录)

    搞一手聚合数据短信API测试(之前用阿里云的搞过,今天我们用聚合) 注册聚合账号!聚合官网链接 登陆后进入短信服务API(免费提供十次) 添加自定义模板(审核速度看脸) 审核成功后得到模板ID 之后得 ...

  10. 【大学生软件测试基础】web版微信登录测试 - 正交表

    微信是一款手机App软件,但它也有web版微信可以登录,如果要测试微信web页面运行环境,需要考虑多种因素.在众多的因素中,我们可以选出几个影响比较大的因素,如服务器.操作系统,插件和浏览器.对于选取 ...

最新文章

  1. C#中的get和post请求(工具类)
  2. 北京大学 AdaMod优化器 孙栩
  3. Kubernetes Dashboard - 每天5分钟玩转 Docker 容器技术(173)
  4. 用反向传导模拟电子运动并模拟HF,HCl,HBr
  5. oracle复制sequence,oracle sequence语句重置方介绍
  6. Elasticsearch整理笔记(四)
  7. [和管子对话] 2 2007-4-6/抽象类和接口的谁是谁非
  8. [论文阅读] Disentangled High Quality Salient Object Detection
  9. linux下svn的用法
  10. 如何用iMazing Profile Editor编辑配置文件
  11. 19.go fix 和 go tool fix
  12. 拓端tecdat|R语言时变向量自回归(TV-VAR)模型分析时间序列和可视化
  13. matlab绘图把横坐标修改为自己想的标签 并保存对应图的代码以便下次修改
  14. 【自学笔记】三维copula的构建与分布函数的求解
  15. CANape CAN工程的创建
  16. 用友ERP实施流程(不是本人所写,只是个搬运工!)
  17. AIDA64 硬件规格、系统信息查询工具附带序列号
  18. NYOJ-171 聪明的kk
  19. Linux中的虚拟机图形界面安装步骤,批量完成虚拟机硬件配置
  20. Word文档怎样修改纸张的方向?分享方法!word文档如何更改纸张的方向?

热门文章

  1. 【整理】GOS附件的上传与下载
  2. 如何写一份高可读性的软件工程设计文档
  3. ddl是什么意思网络语_DDL(数据定义语言)
  4. 有关企业合并时的10条IT措施
  5. 香港中文大学计算机系直博面试经验
  6. [HCTF 2018]WarmUp1PHP 代码审计
  7. 使用pdfbox把PDF转换成图片
  8. JAVA缴税_根据工资和税率计算应缴税(java)
  9. 机器人感知:因子图在SLAM中的应用(读书笔记)第一至三章
  10. 360手机怎样更新系统版本android,360手机N5迎来安卓7.0稳定版升级