今回はcakephpでの走り書き
・LINEAPI v2.1 は今日現在バグってて動かない。
・LINEAPI v2 を使う
・LINEAPIは v1, v2 , v2.1 とバージョンがバラバラなので、エンドURLに注意する。
//ここ変更すりゃ動く
define("LINE_CLIENT_ID", "15****61");
define("LINE_CLIENT_SECRET", "3*******b401cc");
define("LINE_WEB_LOGIN_URL", "https://access.line.me/dialog/oauth/weblogin");
define("LINE_ACCESS_TOKEN_URL", "https://api.line.me/v2/oauth/accessToken");
define("LINE_PROFILE_URL", "https://api.line.me/v2/profile");
define("LINE_REDIRECT_URL", "https://your.com/hoges/complete/");
class HogesController extends AppController
{
public function test()
{
$params = [
'response_type' => 'code',
'client_id' => LINE_CLIENT_ID,
'redirect_uri' => LINE_REDIRECT_URL,
'state' => 'rand'.time()
];
$url = LINE_WEB_LOGIN_URL."?";
$url .= http_build_query($params);
header("Location: {$url}");
$this->autoRender = false;
}
public function complete()
{
$url = LINE_ACCESS_TOKEN_URL."?";
$params = [
"grant_type" => "authorization_code",
"code" => $_GET["code"],
"redirect_uri" => LINE_REDIRECT_URL,
"client_id" => LINE_CLIENT_ID,
"client_secret" => LINE_CLIENT_SECRET,
];
$url .= http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('application/x-www-form-urlencoded'));
$response = curl_exec($ch);
curl_close($ch);
$result = (array)json_decode($response, true);
$accessToken = $result['access_token'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $accessToken));
curl_setopt($ch, CURLOPT_URL, LINE_PROFILE_URL);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$json = json_decode($response);
pd($json);
$this->autoRender = false;
}
}