PHP 对接第三方 LINE 登录,网上找到相关的不多 但是网上哪些乱七八糟的啰啰嗦嗦 要么就是怎么做的, 什么步骤 总会给你省略, 如果有幸你看到我的 可以放心的复制即用, 当然 你也可以用postman去尝试 不过我觉得既然做开发 就没必要那个了! 如果用postman再最后一步的时候 请用本文最下方式
* LINE 官方文档:https://developers.line.biz/en/docs/line-login/getting-started/
* 开发者平台地址:https://developers.line.me/en/
* 获取的code 为一次性的,当你使用过这个code去获取token的时候 无论成功失败 都会在10分钟内失效! 10分钟之后 你才能用,当然 我想你没有时间去等,你可以再从登录开始,从新获取code!
* 注意 LINE 要配置的地址 必须是以 "https" 开头的, 当然如果你这边环境暂时没有配置好 这都没关系,你可以正常配置你的回调地址在LINE上,之后 在登录line之后 会跳转一个错误的地址,请仔细看,其实地址没有错,所以你只要点击查看地址的头部 把https的“s”去掉就可以看到回传的“code 和 state”
首先要做的第一步是 在自己的静态页面上放一个LINE的登录链接按钮 如下图 随便自己搞
按钮地址为:https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id={你的频道id}&redirect_uri={你的回调地址}&state={你的自定义状态码}&scope=openid%20profile
在此之前 你 必须去开发者平台配置回调地址

根据上面的回调地址 登录成功后 会携带 我们必须的 code(重要), 和一个随机数state返回(get接收即可)
主要流程:
public function getLineInfoAction(){
$Config = Config::getInstance();
$WebSite_arr = $Config->getWebSiteConfig(); # 这个和上一个不用管 可以不要 这是我配置 Channel ID channel Secret 和地址的配置文件 只要再下方配置正确即可
$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'] = $WebSite_arr['line_ChannelID']; # 你的 Channel ID
$TokenParameter['client_secret'] = $WebSite_arr['line_ChannelSecret']; # 你的 channel Secret
$TokenParameter['redirect_uri'] = $WebSite_arr['line_CallBack']; # 回调地址 即平台配置的回调地址
$tr = $this->GetAccessToken($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']);
# 返回一个数组
if($tp && count($tp) > 0){
干你想干的一切
} else {
...
}
}
}
# POST
function GetAccessToken($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;
}
# GET
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 对接第三方 LINE 登录,网上找到相关的不多 但是网上哪些乱七八糟的啰啰嗦嗦 要么就是怎么做的, 什么步骤 总会给你省略, 如果有幸你看到我的 可以放心的复制即用, 当然 你也可以用postman去尝试 不过我觉得既然做开发 就没必要那个了! 如果用postman再最后一步的时候 请用本文最下方式的更多相关文章
- 如何从零开始对接第三方登录(Java版):QQ登录和微博登录
前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了QQ和微博这2大常用软件的一键登录,总的来说其实都挺简单的,可能会有一点小坑,但不算多,完整记录下来方便后来人快速对接. 后台设 ...
- 【转】【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字 ...
- kubernetes对接第三方认证
kubernetes对接第三方认证 kubernetes离线安装包地址 概述 本文介绍如何使用github账户去关联自己kubernetes账户.达到如下效果: 使用github用户email作为ku ...
- github 授权登录教程与如何设计第三方授权登录的用户表
需求:在网站上想评论一篇文章,而评论文章是要用户注册与登录的,那么怎么免去这麻烦的步骤呢?答案是通过第三方授权登录.本文讲解的就是 github 授权登录的教程. 效果体验地址:http://biao ...
- QQ第三方授权登录OAuth2.0实现(Java)
准备材料 1.已经备案好的域名 2.服务器(域名和服务器为统一主体或域名已接入服务器) 3.QQ号 4.开发流程:https://wiki.connect.qq.com/%E5%87%86%E5%A4 ...
- 如何更优雅地对接第三方API
本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程 ...
- SpringBoot基于JustAuth实现第三方授权登录
1. 简介 随着科技时代日渐繁荣,越来越多的应用融入我们的生活.不同的应用系统不同的用户密码,造成了极差的用户体验.要是能使用常见的应用账号实现全应用的认证登录,将会更加促进应用产品的推广,为生活 ...
- 对接第三方支付接口-获取http中的返回参数
这几天对接第三方支付接口,在回调通知里获取返回参数,有一家返回的json格式,请求参数可以从标准输入流中获取. //1.解析参数 , 读取请求内容 BufferedReader br; String ...
- 【Demo】QQ,github,微博第三方社交登录
本文主要讲解 集成 第三方社交账号登录 为什么会有这个需求? 主要是因为目前互联网的网站数量太多,如果在各个站点都注册一个账号 用户非常不容易记住每个账号的用户名和密码,并且非常难保证每个账号的密码足 ...
随机推荐
- zoj 3859 DoIt is Being Flooded (MFSet && Flood Fill)
ZOJ :: Problems :: Show Problem 这题开始的时候想不到怎么调整每个grid的实际淹没时间,于是只好找了下watashi的题解,发现这个操作还是挺简单的. ZOJ3354 ...
- 2018-8-10-win10-uwp-自定义控件初始化
title author date CreateTime categories win10 uwp 自定义控件初始化 lindexi 2018-08-10 19:16:50 +0800 2018-2- ...
- @JsonIgnore @JsonIdentityInfo 处理Hibernate 循环引用的问题
enterprise和user一对一的关系: @Entity @Table(name = "enterprise") public class Enterprise extends ...
- siblings() 获得匹配集合中每个元素的同胞
定义和用法 siblings() 获得匹配集合中每个元素的同胞,通过选择器进行筛选是可选的. 如果给定一个表示 DOM 元素集合的 jQuery 对象,.siblings() 方法允许我们在 DOM ...
- sdk uncaught third Error Cannot assign to read only property 'constructor' of object '#<V>' (小程序)
sdk uncaught third Error Cannot assign to read only property 'constructor' of object '#<V>' 在a ...
- visualStudio 无法登陆
如果遇到 visualStudio 无法登陆,可以看下我的方法,可能有用 尝试关闭代理 打开设置.网络.代理,关了它,试试 如果遇到下面的问题: 我们无法刷新此账户的凭据 No home tenant ...
- P1026 翻硬币
题目描述 小明正在玩一个"翻硬币"的游戏.桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如果 ...
- linux自旋锁函数
我们已经看到 2 个函数, spin_lock 和 spin_unlock, 可以操作自旋锁. 有其他几个函 数, 然而, 有类似的名子和用途. 我们现在会展示全套. 这个讨论将带我们到一个我们无 法 ...
- 备战省赛组队训练赛第十八场(UPC)
传送门 题解:by 青岛大学 A:https://blog.csdn.net/birdmanqin/article/details/89789424 B:https://blog.csdn.net/b ...
- ES6/ES7/ES8新特性
ES6 变量的改变 let const 2. 字符串新增方法 let str = 'react'; str.includes('re') // true str.repeat(3) // reactr ...
