* 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再最后一步的时候 请用本文最下方式的更多相关文章

  1. 如何从零开始对接第三方登录(Java版):QQ登录和微博登录

    前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了QQ和微博这2大常用软件的一键登录,总的来说其实都挺简单的,可能会有一点小坑,但不算多,完整记录下来方便后来人快速对接. 后台设 ...

  2. 【转】【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字 ...

  3. kubernetes对接第三方认证

    kubernetes对接第三方认证 kubernetes离线安装包地址 概述 本文介绍如何使用github账户去关联自己kubernetes账户.达到如下效果: 使用github用户email作为ku ...

  4. github 授权登录教程与如何设计第三方授权登录的用户表

    需求:在网站上想评论一篇文章,而评论文章是要用户注册与登录的,那么怎么免去这麻烦的步骤呢?答案是通过第三方授权登录.本文讲解的就是 github 授权登录的教程. 效果体验地址:http://biao ...

  5. QQ第三方授权登录OAuth2.0实现(Java)

    准备材料 1.已经备案好的域名 2.服务器(域名和服务器为统一主体或域名已接入服务器) 3.QQ号 4.开发流程:https://wiki.connect.qq.com/%E5%87%86%E5%A4 ...

  6. 如何更优雅地对接第三方API

    本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程 ...

  7. SpringBoot基于JustAuth实现第三方授权登录

    1. 简介   随着科技时代日渐繁荣,越来越多的应用融入我们的生活.不同的应用系统不同的用户密码,造成了极差的用户体验.要是能使用常见的应用账号实现全应用的认证登录,将会更加促进应用产品的推广,为生活 ...

  8. 对接第三方支付接口-获取http中的返回参数

    这几天对接第三方支付接口,在回调通知里获取返回参数,有一家返回的json格式,请求参数可以从标准输入流中获取. //1.解析参数 , 读取请求内容 BufferedReader br; String ...

  9. 【Demo】QQ,github,微博第三方社交登录

    本文主要讲解 集成 第三方社交账号登录 为什么会有这个需求? 主要是因为目前互联网的网站数量太多,如果在各个站点都注册一个账号 用户非常不容易记住每个账号的用户名和密码,并且非常难保证每个账号的密码足 ...

随机推荐

  1. H3C路由器Telnet服务配置命令

  2. 通过GDB重新获得进程的输出

    有时通过SecureCRT或者Putty远程ssh到主机上执行某个进程,因长时间没有交互导致ssh断链,此时该进程由init进程收留.该进程的输出也就无法获得了. 这种情况下,可以利用gdb重新获得该 ...

  3. H3C 代理ARP

  4. sleep usleep nanosleep alarm setitimer使用

    sleep使用的是alarm之类的定时器,定时器是使得进程被挂起,使进程处于就绪的状态. signal+alarm定时器 alarm参数的类型为uint, 并且不能填0 #include <st ...

  5. 上传图片保存到MySql数据库并显示--经验证有效

    以下方法仅供参考,只是介绍下这一种方法而已.欢迎指正!! 前台(image.html):  1<html> 2<head> 3<title>上传图片</tit ...

  6. jq杂项方法/工具方法----isArray()

    https://www.cnblogs.com/sandraryan/ $.isArray()函数用于判断指定参数是否是一个数组.返回布尔值. <!DOCTYPE html> <ht ...

  7. Laravel 服务提供者实例教程 —— 创建 Service Provider 测试实例

    从某种意义上说,服务提供者有点类似HTTP控制器,HTTP控制器用于为相关路由注册提供统一管理,而服务提供者用于为相关服务容器提供统一绑定场所,此外服务提供者还可以做一些初始化启动操作.Laravel ...

  8. Codeforces Round #185 (Div. 1 + Div. 2)

    A. Whose sentence is it? 模拟. B. Archer \[pro=\frac{a}{b}+(1-\frac{a}{b})(1-\frac{c}{d})\frac{a}{b}+( ...

  9. SQL2008 R2安装完成后开启services服务指引和 sa账号启用、数据类型

  10. [转]C#操作Memcached帮助类

    在VS中安装Memcached,直接在NuGet下搜索Memcached,选择第一个进行安装: 服务端资源下载地址:https://pan.baidu.com/s/1gf3tupl 接下来开始写程序, ...