帖子
帖子
用户
博客
课程
显示全部楼层
21
帖子
0
勋章
155
Y币

[插件使用] ajAuthNoPush(极光认证)demo分享

[复制链接]
发表于 2019-9-18 16:33:56
本帖最后由 神器的小土匪 于 2019-11-26 17:13 编辑

ajAuthNoPush 本模块封装了极光认证SDK,,用于进行一键登录。注:不可与ajpush模块一起用会有冲突;ios上移动取号需要配置包名到资源文件中,没法动态配置,所以移动号ios上暂不支持。
运行图.PNG
前端示例代码:
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="maximum-scale=1.0, minimum-scale=1.0, user-scalable=0, initial-scale=1.0, width=device-width"/>
  6.     <meta name="format-detection" content="telephone=no, email=no, date=no, address=no">
  7.     <title>WinA</title>
  8.     <link rel="stylesheet" type="text/css" href="css/api.css" />
  9.     <link rel="stylesheet" type="text/css" href="css/box.css" />
  10.     <script type="text/javascript" src="script/public.js"></script>
  11.     <style>
  12.             p{
  13.                     color:#999;
  14.                     padding:5px;
  15.             }
  16.             .clickbtn{
  17.                     width:100%;
  18.             }
  19.             
  20.             #main{
  21.                     padding-left:50px;
  22.             }
  23.     </style>
  24.         <script type="text/javascript">
  25.             
  26.                 var ajAuth = null;
  27.                 apiready = function(){
  28.                     ajAuth = api.require('ajAuthNoPush');
  29.             }
  30.             
  31.                 function init(){
  32.                         var param = {
  33.                                 appKey:"yourkey",
  34.                                 phoneNum:{color: '#111000'},
  35.                         loginTitle:{title: "本机号码登录",color: "#000222",bgColor: "#ff0000"},
  36.                         oneKeylogin:{title: "一键登录",color: "#ffffff"},
  37.                         appPrivacy:{title: "xx服务协议",url: "http://www**.**/agreement.html",color:"#21ba86"}
  38.                 };
  39.                 ajAuth.init(param, function(ret, err){
  40.                         console.log(JSON.stringify(ret));
  41.                         document.getElementById('msg').innerHTML=JSON.stringify(ret)+'<br>'+document.getElementById('msg').innerHTML
  42.                 });
  43.                 }
  44.                
  45.                 function loginAuth(){
  46.                 ajAuth.loginAuth(function(ret, err){
  47.                         console.log(JSON.stringify(ret));
  48.                         document.getElementById('msg').innerHTML=JSON.stringify(ret)+'<br>'+document.getElementById('msg').innerHTML
  49.                 });
  50.                 }
  51.                
  52.                 function getToken(){
  53.                 ajAuth.getToken(function(ret, err){
  54.                         console.log(JSON.stringify(ret));
  55.                         document.getElementById('msg').innerHTML=JSON.stringify(ret)+'<br>'+document.getElementById('msg').innerHTML
  56.                 });
  57.                 }
  58.                
  59.                

  60.         </script>
  61. </head>
  62. <body>
  63.     <div id="wrap">
  64.         <div id="main">
  65.                
  66.                 <br>
  67.                         <div class='itemtitle'>1、弹出对话框</div><br>
  68.                                 <div class="clickbtn" tapmode="active" onclick="init()" >init</div> <br>
  69.                                 <div class="clickbtn" tapmode="active" onclick="loginAuth()" >loginAuth</div> <br>
  70.                                 <div class="clickbtn" tapmode="active" onclick="getToken()" >getToken</div> <br>
  71.                         <div id=msg ></div>        
  72.                 </div>
  73.         </div>
  74. </body>
  75. </html>
复制代码


后端代码我这提供了php版本的例子,示例代码:
  1.     <?php  
  2.        $prefix = '-----BEGIN RSA PRIVATE KEY-----';
  3.        $suffix = '-----END RSA PRIVATE KEY-----';
  4.        $result = '';
  5.        $prikey = "your private key";//秘钥对的私钥,公钥放在了极光后台。

  6.        $key = $prefix . "\n" . $prikey . "\n" . $suffix;
  7.       
  8.        function httpRequest($url,$data = null,$arr_header = null){
  9.             $curl = curl_init();
  10.             curl_setopt($curl, CURLOPT_URL, $url);
  11.             curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  12.             curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  13.             if (!empty($data)){
  14.                 curl_setopt($curl, CURLOPT_POST, 1);
  15.                 curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  16.             }
  17.             if(!empty($arr_header)){
  18.                 curl_setopt($curl, CURLOPT_HTTPHEADER, $arr_header);
  19.             }
  20.             curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  21.             $output = curl_exec($curl);
  22.             // echo curl_getinfo($curl);
  23.             curl_close($curl);
  24.             unset($curl);
  25.             echo 'output='.$output;
  26.             return json_decode($output,true);
  27.         }
  28.         $appKey="your appkey";//极光后台得到
  29.         $Secret="your master secret";//极光后台得到
  30.         $url = "https://api.verification**.**/v1/web/loginTokenVerify";
  31.         $header[] = "Content-Type:application/json";
  32.         $header[] = "Authorization: Basic ".base64_encode($appKey.":".$Secret); //添加头,在appKey和Secret处填写对应账号密码
  33.         
  34.         //获取手机号码
  35.         
  36.         $data['loginToken'] = "au33H5QRZfiDET8e2_3-zV8nwQHJ8Qm2q-wvqZQRTRE6ZZmIZIRXzYvuhZiR8VJCtrOoQyhtqKvRfn8Wv7KXwVvswiXCDD-AWbo3Yv1ZVKF_EhqveAOmvkzMAnUEhpu8pB-3RMr3tVLcJThJ6P9QaIjIspzitz8o196SWP-GCRc=";//这个从App端传来,可以通过post传递过来,自行替换
  37.         getPhone($data,$header,$key);
  38.         
  39.         
  40.         /*认证手机号码和本机是否一致
  41.         $data['token'] = "evSzYbbJPA5CNAZbT4hDPaPoSf8MtimAeDgy8dda-AGh7q80nnw6g6BbfkgFRTDpwq7IMpgw9ZgpfcdCZKyuO-4UooH0QCa4VMrAhr3oBvGgFquBY3a6LLa1KhBA3EiZIGCosYG8ZJwjoynVDEaqvQ==";
  42.         $data['phone']='13049300000';
  43.         $data['exID']='123456';
  44.         
  45.         tokenVerify($data,$header);
  46.         */
  47.         
  48.         //获取号码
  49.         function getPhone($data ,$header,$key){
  50.             $url = "https://api.verification**.**/v1/web/loginTokenVerify";
  51.             $res = httpRequest($url,json_encode($data), $header);
  52.             $encrypted=$res['phone'];
  53.             $r = openssl_private_decrypt(base64_decode($encrypted), $result, openssl_pkey_get_private($key));
  54.             echo "\n电话号码是:".$result . "\n";
  55.         }
  56.         
  57.         //认证手机号码和本机是否一致*/
  58.         function tokenVerify($data,$header){
  59.             $url = "https://api.verification**.**/v1/web/verify";
  60.             $res = httpRequest($url,json_encode($data), $header);
  61.             var_dump($res);
  62.         }
  63.     ?>
复制代码



如有问题,欢迎留言讨论,谢谢支持。



50
帖子
2
勋章
1327
Y币
赞一个
18
帖子
0
勋章
125
Y币
{"cmd":"init","code":8004,"result":"init failed."} at app_yzdl_frm.html : 54
18
帖子
0
勋章
125
Y币
没有实现了
不错
21
帖子
0
勋章
155
Y币
akber 发表于 2019-10-1 22:36
{"cmd":"init","code":8004,"result":"init failed."} at app_yzdl_frm.html : 54

包名对了吗,错误码参照极光文档  https://docs**.**//jverification/client/android_api/
2
帖子
0
勋章
12
Y币
下面的那个同意的复选框怎样自动打钩
18
帖子
0
勋章
125
Y币
一键登录实现以后 。 其他登录方式的话微信登录等图标那边添加和实现
4
帖子
0
勋章
22
Y币
一直报8004
4
帖子
0
勋章
22
Y币
我为啥报8004
您需要登录后才可以回帖 登录

本版积分规则