line-notify-sdk-php
line-notify-sdk-php copied to clipboard
LINE Notify SDK for PHP
LINE Notify SDK for PHP
LINE Notify SDK for PHP
OUTLINE
- Demonstration
- Requirements
- Client for LINE Notify
- Installation
- Usage
- Auth Client
- getAuthUrl()
- getAccessToken()
- getCode()
- getWebPath()
- Notify Client
- notify()
- status()
- revoke()
- setAccessTokens()
- addAccessToken()
- getRateLimit()
- Shared Methods
- getResponseLogs()
- Auth Client
- Resources
DEMONSTRATION
Sample Codes Site for LINE Notify
As a quick start, use Auth client to create an authorize URL with callback redirectUrl for redirection:
$lineNotifyAuth = new \yidas\lineNotify\Auth([
'clientId' => 'i5zOKhJ9hGyRYdCk281wJr',
'clientSecret' => '************************',
]);
$authUrl = $$lineNotifyAuth->getAuthUrl("http://localhost/redirectUrl.php");
// header("Location: {$authUrl}");
Next, use Auth client to get accessToken on callback URL (redirectUrl.php), then use Notify client to send notifications with accessToken:
// Get accessToekn by automatically obtaining callback code from query string
$accessToken = $lineNotifyAuth->getAccessToken();
// Send notification with accessToken (Concurrency supported)
$lineNotify = new \yidas\lineNotify\Notify($accessToken);
$result = $lineNotify->notify('Hello!');
REQUIREMENTS
This library requires the following:
- PHP >= 5.4.0
- guzzlehttp/guzzle >= 5.3.1
- LINE Notify service client
Client for LINE Notify
Each LINE Notify service require authentication information for integration, as shown below:
- Client ID
- Client Secret
To get a LINE Notify Client:
- Register a new LINE Notify service from LINE Notify - Add service with redirectUrl setting.
- After registering, get your service's clientId/clientSecret from LINE Notify - Manage registered services (service provider) for integration.
INSTALLATION
Run Composer in your project:
composer require yidas/line-notify-sdk ~1.0.0
Then you could use SDK class after Composer is loaded on your PHP project:
require __DIR__ . '/vendor/autoload.php';
use yidas\lineNotify\Auth;
use yidas\lineNotify\Notify;
USAGE
Before using any API methods, first you need to create a Client with configuration, then use the client to access LINE Notify API methods.
Auth Client
Create a LINE Notify Auth Client with API Authentication:
$lineNotifyAuth = new \yidas\lineNotify\Auth([
'clientId' => 'Your LINE Notify service's client ID',
'clientSecret' => 'Your LINE Notify service's client Secret',
// 'debug' => true,
// 'log' => true,
]);
Parameters
array $config:
| Key | Required | Type | Default | Description |
|---|---|---|---|---|
| clientId | Y | string | LINE Notify service's client ID | |
| clientSecret | Y | string | LINE Notify service's client Secret | |
| debug | N | boolean | false | Debug mode: Throw error exception when API request or result fails |
| log | N | boolean | false | Log mode: Save all responses to each API request |
getAuthUrl()
Get LINE Notify OAuth authorize URL
public string getAuthUrl(string $redirectUrl=null, string $state='none', string $responseMode=null)
Example:
// Set redirectUrl to `/callback` from the same path of current URL
define('LINE_NOTIFY_REDIRECT_URL', \yidas\lineNotify\Auth::getWebPath() . "/callback");
$authUrl = $lineNotifyAuth->getAuthUrl(LINE_NOTIFY_REDIRECT_URL);
getAccessToken()
Get AccessToken with redirectUrl and callback's code
public string getAccessToken(string $redirectUri=false, string $code=false, boolean $stateForVerify=false)
Example:
$accessToken = $lineNotifyAuth->getAccessToken(LINE_NOTIFY_REDIRECT_URL, $_GET['code'], 'CSRF state for verifying');
getCode()
Get code on callback redirect URL
static public string getCode(string $stateForVerify=false)
getWebPath()
Get current web URL path
static public string getWebPath()
Notify Client
Create a LINE Notify Client with accessToekn setting:
$lineNotify = new \yidas\lineNotify\Notify('HkyggKbHymoS*****************sFuVfa0mlcBNPI', [
// 'debug' => true,
// 'log' => true,
]);
Parameters
string|array $accessTokens: Support single or multiple accessTokens for notificationarray $config:
| Key | Required | Type | Default | Description |
|---|---|---|---|---|
| debug | N | boolean | false | Debug mode: Throw error exception when API request or result fails |
| log | N | boolean | false | Log mode: Save all responses to each API request |
notify()
Send notification concurrently based on accessToken(s)
public integer notify(string $message, array $options=[], string|array $accessTokens=false)
Return Values: Number of successful notifications
Example:
// Send single notification with one accessToken
$lineNotify = new \yidas\lineNotify\Notify('HkyggKbHymoS*****************sFuVfa0mlcBNPI');
$result = $lineNotify->notify('Hello!');
// Send notification for multiple accessTokens concurrently
$lineNotify = new \yidas\lineNotify\Notify(['GymoS****', 'Afa0****']);
$sccessNum = $lineNotify->notify('Hello everyone!');
Options
| Option | Type | Description |
|---|---|---|
| message | string | 1000 characters max |
| imageThumbnail | HTTP/HTTPS URL | Maximum size of 240×240px JPEG |
| imageFullsize | HTTP/HTTPS URL | Maximum size of 2048×2048px JPEG |
| imageFile | string | Local file path |
| stickerPackageId | number | Package ID. (Sticker List) |
| stickerId | number | Sticker ID. |
| notificationDisabled | boolean | Deault is false |
Example
$lineNotify = new \yidas\lineNotify\Notify(['HkyggKbHymoS*****************sFuVfa0mlcBNPI']);
// Send notification with image URL options
$successNum = $lineNotify->notify(false, [
'message' => 'Image Notify',
'imageThumbnail'=>'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/LINE_logo.svg/220px-LINE_logo.svg.png',
'imageFullsize'=>'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/LINE_logo.svg/440px-LINE_logo.svg.png',
]);
// Send notification with image upload options
$successNum = $lineNotify->notify(false, [
'message' => 'Image Notify',
'imageFile' => '/tmp/filename.png',
]);
// Send notification with sticker options
$successNum = $lineNotify->notify(false, [
'message' => 'Sticker Notify',
'stickerPackageId' => 1,
'stickerId' => 100,
]);
imageFilerequires to be a file path of string type
status()
Check accessToken connection status
public array status(string $accessToken)
Example:
$response = $lineNotify->status('HkyggKbHymoS*****************sFuVfa0mlcBNPI');
$statusCode = $response['status'];
revoke()
Revoke accessToken on the connected service side
public revoke(string $accessToken)
Example:
$result = $lineNotify->revoke('HkyggKbHymoS*****************sFuVfa0mlcBNPI');
setAccessTokens()
Set AccessTokens for sending notification
public self setAccessTokens(array $accessTokens=[])
addAccessToken()
Add an AccessToken for sending notification
public self addAccessToken(string $accessToken)
getRateLimit()
Get last response's Rate Limit information
public array getRateLimit()
Shared Methods
getResponseLogs()
Get response logs when log mode is enabled
public array getResponseLogs()