zoukankan      html  css  js  c++  java
  • 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;
    }


    
    
    
      
  • 相关阅读:
    第十二次作业
    Beta 冲刺(7/7)
    Beta 冲刺(6/7)
    Beta 冲刺(5/7)
    Beta 冲刺(4/7)
    Beta 冲刺(3/7)
    Beta 冲刺(2/7)
    第十次作业
    Beta 冲刺(1/7)
    福大软工 · 最终作业
  • 原文地址:https://www.cnblogs.com/G921123/p/11691606.html
Copyright © 2011-2022 走看看