* 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. AtCoder Beginner Contest 075 C Bridge(割边)

    求割边个数.Tarjan的板子.. #include <bits/stdc++.h> using namespace std; const int MAXN = 55; const int ...

  2. 2019-11-17-dotnet-C#-获取本机外网-IP-地址

    title author date CreateTime categories dotnet C# 获取本机外网 IP 地址 lindexi 2019-11-17 16:38:10 +0800 201 ...

  3. python项目管理

    Python 通常没有对应 Java 的 Ant / Maven 这样的 build tool,有一个用于打包的 setuptools / distutils 但也并不完全等价.如果是用来管理依赖包, ...

  4. HTML静态网页--JavaScript-DOW操作

    1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Windows对象操作 一.属性和方法: 属性(值或者子对象): o ...

  5. 横向tab计算滚动位置

    React横向滚动计算 class Footer extends React.Component { handleClick(e) { const offset = 150; // 指定偏移量 thi ...

  6. Linux 查看kafka版本

    find /opt -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*'

  7. docker swarm搭建tidb踩坑日记

    背景 公司新项目数据量翻了一倍,每天上亿数据量的读写,传统的单库单表已经满足不了目前的需求,得考虑下分布式存储了.那用啥呢,之前有考虑用到mycat,但是一进官网,一股山寨气息扑面而来,技术群进群还收 ...

  8. tf.shape()

    tf.shapetf.shape( input, name=None, out_type=tf.int32)12345例如:将矩阵的维度输出为一个维度矩阵import tensorflow as tf ...

  9. H3C OSPF基本配置命令

  10. [转]WebApi 后端文件传输至远程服务器

    /* 功能说明:微信退款需要有数字证书,而我们公司是做小程序平台的,会帮商家自动退款,所以会要求商家把微信证书上传至我们服务器,以便 微信退款. 使用HttpPostedFile 接受前端上传的文件, ...