IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> uniapp Line授权登录 -> 正文阅读

[PHP知识库]uniapp Line授权登录

登录逻辑:通过请求Line登录地址,服务端获取回调信息,携带参数重定向到HTML页面,HTML页面获取参数请求登录接口

1. 开发者平台配置

https://developers.line.biz/en/

2. 登录地址

https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=换成开发者申请的&redirect_uri=回调地址&state123456&scope=openid%20profile

3.创建一个HTML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Line Login</title>
    <meta charset="UTF-8">
    <style type="text/css" media="screen">
        hr {
            border: none;
        }
    </style>
    <script src="__PUBLIC__/jquery-3.5.1.min.js"></script>
    <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
</head>

<body>
<script>
    document.addEventListener('UniAppJSBridgeReady', function() {
        var userId = getUrlParam('userId')
        var displayName = getUrlParam('displayName')
        var pictureUrl = getUrlParam('pictureUrl')
        console.log(userId)
        var data = {
            oauth: 'line',
            userId: userId,
            displayName: displayName,
            pictureUrl: pictureUrl,
        }
        $.post("https:/www.ceshi.com/api/Login/sfline", data, function(res){
            console.log(res);
            uni.postMessage({
                data: res
            })
        })

        /*获取地址栏参数*/
        function getUrlParam(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
            var r = window.location.search.substr(1).match(reg); //匹配目标参数
            if (r != null) return unescape(r[2]);
            return null; //返回参数值
        }
    })
</script>
</body>

</html>

4. php服务端接收回调参数

function Line(){
	$Tokencurl = 'https://api.line.me/oauth2/v2.1/token'; // 获取 access_token 的地址 以 post方式请求
	$TokenParameter['grant_type'] = 'authorization_code';
	$TokenParameter['code'] = $_GET['code']; // line 登录成功后返回的 code
	$TokenParameter['client_id'] = '165604****';// 你的  Channel ID
	$TokenParameter['client_secret'] = '2c9e8b82bdd3489af5a310b72********';// 你的 channel Secret
	$TokenParameter['redirect_uri'] = 'https://www.ceshi.com/api/login/sflink';// 回调地址 即平台配置的回调地址 保持一致
	$tr = $this->GetToken($Tokencurl,$TokenParameter);// post 请求 获取必要的 access_token
	$TokenData = json_decode($tr,true);
	
	// 下面则根据拿到的 access_token 去获取用户的详细信息 最终的信息 如图最下方post获取的数据格式
	$PersonalDataParameterUrl = 'https://api.line.me/v2/profile';// 地址 GET获取
	$tp = $this->GetPersonalData($PersonalDataParameterUrl,$TokenData['access_token']);
	file_put_contents( dirname(__FILE__).'code.txt', var_export($tp,true), FILE_APPEND );
	header("location:重定向地址?userId={$tp['userId']}&displayName={$tp['displayName']}&pictureUrl={$tp['pictureUrl']}");
	exit;
}

function GetToken($url, $post_data) {
        $postdata = http_build_query($post_data);
        $options = array(
            'http' => array(
                'method' => 'POST',
                'header' => 'Content-type:application/x-www-form-urlencoded',
                'content' => $postdata,
                'timeout' => 15 * 60
            )
        );
        $context = stream_context_create($options);
        $result = file_get_contents($url, false, $context);
        return $result;
    }

function GetPersonalData($url,$token){
        $headers[]  =  "Accept:application/json";
        $headers[]  =  "Authorization:Bearer ". $token;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers );
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        $output = curl_exec($ch);
        curl_close($ch);
        $output = json_decode($output,true);
        return $output;
    }
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 14:19:19  更:2021-07-10 14:21:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 2:06:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码