這次 Faceook 規定 4/30 要升級到比較新的套件,Google 則是 4/20 以後要禁止使用 openid 2.0 登入,列一下 PHP 端製作的筆記。
首先你要下載 Facebook PHP 的 SDK,安裝方法有 composer 或直接下載,PHP 版本需求為 5.4+。
Composer
{
"require" : {
"facebook/php-sdk-v4" : "4.0.*"
}
}
GitHub
https://github.com/facebookarchive/facebook-php-sdk
PHP Code
<?php
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
use Facebook\FacebookRedirectLoginHelper;
$id = 'YOUR CLIENT ID';
$secret = 'YOUR SECRET';
$url = 'RETURN URL';
// Pemission scope, type is array
// reference url: https://developers.facebook.com/docs/facebook-login/permissions/v2.3
$permissions = 'YOUR PERMISSIONS SCOPE';
FacebookSession::setDefaultApplication($id, $secret);
$helper = new FacebookRedirectLoginHelper($url);
try {
if(isset($_SESSION['access_token']) === true) {
$session = new FacebookSession($_SESSION['access_token']);
} else {
$session = $helper->getSessionFromRedirect();
}
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
$ex->getMessage();
} catch(\Exception $ex) {
// When validation fails or other local issues
$ex->getMessage();
}
if ($session) {
$_SESSION['access_token'] = $session->getToken();
// Get all scope id
$request = (new FacebookRequest($session, 'GET', '/me/ids_for_business'))->execute();
$idGroup = (array)$request->getGraphObject()->getProperty('data')->asArray();
// Get user info
$request = (new FacebookRequest($session, 'GET', '/me'))->execute();
$user = $request->getGraphObject()->asArray();
} else {
// Echo login url
echo $helper->getLoginUrl($permissions);
}
安裝方法一樣有兩種,composer 跟 github,PHP 要求為 5.2+。
Composer
"require": {
"google/apiclient": "1.0.*@beta"
}
GitHub
https://github.com/google/google-api-php-client
PHP Code
<?php
$id = 'YOUR CLIENT ID';
$secret = 'YOUR SECRET';
$url = 'RETURN URL';
$client = new Google_Client();
$client->setClientId($id);
$client->setClientSecret($secret);
$client->setRedirectUri($url);
$client->setScopes(
array(
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile',
)
);
$service = new Google_Service_Oauth2($client);
if (isset($_GET['code']) === true) {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}
if (isset($_SESSION['access_token']) === true) {
$client->setAccessToken($_SESSION['access_token']);
}
if ($client->getAccessToken()) {
// User info
$me = $service->userinfo->get();
} else {
$authUrl = $client->createAuthUrl();
// Login url
echo $authUrl;
}
沒有留言:
張貼留言