|
Social Login Integration การ Login ด้วย Social API (Facebook, Google, Twitter, OpenID etc...) |
Login ด้วย Social API การทำ Login และ Post ข้อความ ใน Facebook, Google, Twitter, OpenID, Windows Live และอื่นๆ
ดาวน์โหลดจาก http://hybridauth.sourceforge.net/ หรือจากโค้ดตัวอย่าง
ในบทความนี้ผมใช้ Google เป็นตัวอย่าง เพราะ Facebook สมัครไม่ได้เพราะไม่ได้ sms ยืนยัน
การสร้าง App เพื่อเอา App ID และ Key นั้น ก็คล้ายๆ กัน ทุกตัว ต่างที่ บางตัวอาจกรออกข้อมูลเยอะไปหน่อยแค่นั้นเอง
แต่สิ่งที่เราต้องการคือ App ID และ Key เท่านั้น
ตัวอย่านี้ผมสร้างไฟล์ 2 ไฟล์
1. index.php เพื่อใช้ในการ ล็อกอิน , และดึงข้อมูล
2. share.php เพื่อส่งข้อมูลผ่าน API ไปยัง provider กรณีที่ login ด้วย Facebook หรือ Provider อนุญาติให้ส่งข้อความเขาไปได้ ซึ่งการ Post ข้อมูลไปทำได้ง่ายมาก ดังตัวอย่าง
เริ่มต้นก็ต้องไปสมัคร Dev ของ facebook, google, etc... สิ่งที่สำคัญหรือสิ่งที่โปรแกรมต้องการ
1. Redirect URIs: http://localhost/hybrid-test/hybridauth/?hauth.done=Google
เป็น URL ที่ Callback จาก prvider ในที่นี้ระบุเป็น Google
2. App ID , Secret Key
3. Host name or Server name
สิ่งที่ได้มา
การ Config ใน config.php
1. "base_url" => "http://localhost/hybrid-test/hybridauth/" ชี้ไปยังที่อยู่ของ Lib
2. ใส่ App ID , Secret Key ใน providers ที่เราได้ Key มา
3. ตัวไหนไม่ใช้ให้เป็น "enabled" => false อันนี้ไม่จำเป็น
ตัวอย่างทั้งหมดอยุ่ที่ :
index.php
<?php
session_start();
// $_SESSION['provider'] ---> เก็บค่าว่าเรา login ด้วยบัญชีอะไร เพื่อนำไปใช้งาน
$config = dirname(__FILE__) . '/hybridauth/config.php'; // config ของ Lib
require_once( "./hybridauth/Hybrid/Auth.php" ); // class ที่ใช้งาน
if (isset($_REQUEST['action'])) {
if ($_REQUEST['action'] == 'logout') {
session_destroy();
header("Location: ./");
} else {
$_SESSION['provider'] = $_REQUEST['action']; // เก็บว่าเรา login ด้วยบัญชีไหน
$hybridauth = new Hybrid_Auth($config);
try {
$adapter = $hybridauth->authenticate(trim($_SESSION['provider']));
$user_data = $adapter->getUserProfile();
$_SESSION['user_name'] = $user_data->displayName;
//---> เก็บข้อมุลหรือนำปตรวจสอบว่ามีอยู่แล้ว
//---> $user_data ข้อมูลทั้งหมดที่ Provider ให้มา
?>
<a href="<?php echo $user_data->profileURL; ?>"><img src="<?php echo $user_data->photoURL; ?>" border="1"></a>
<table width="100%" cellspacing="0" cellpadding="3" border="0">
<tbody>
<tr>
<td width="10%">providerID</td>
<td width="83%"> <?php echo $adapter->id; ?></td>
</tr>
<tr>
<td width="10%">identifier</td>
<td width="83%"> <?php echo $user_data->identifier; ?></td>
</tr>
<tr>
<td>profileURL</td>
<td> <a href="<?php echo $user_data->profileURL; ?>"><?php echo $user_data->profileURL; ?></a></td>
</tr>
<tr>
<td>webSiteURL</td>
<td> <?php echo $user_data->webSiteURL; ?></td>
</tr>
<tr>
<td>photoURL</td>
<td> <?php echo $user_data->photoURL; ?></td>
</tr>
<tr>
<td>displayName</td>
<td> <?php echo $user_data->displayName; ?></td>
</tr>
<tr>
<td>description</td>
<td> <?php echo $user_data->description; ?></td>
</tr>
<tr>
<td>firstName</td>
<td> <?php echo $user_data->firstName; ?></td>
</tr>
<tr>
<td>lastName</td>
<td> <?php echo $user_data->lastName; ?></td>
</tr>
<tr>
<td>gender</td>
<td> <?php echo $user_data->gender; ?></td>
</tr>
<tr>
<td>language</td>
<td> <?php echo $user_data->language; ?></td>
</tr>
<tr>
<td>age</td>
<td> <?php echo $user_data->age; ?></td>
</tr>
<tr>
<td>birthDay</td>
<td> <?php echo $user_data->birthDay; ?></td>
</tr>
<tr>
<td>birthMonth</td>
<td> <?php echo $user_data->birthMonth; ?></td>
</tr>
<tr>
<td>birthYear</td>
<td> <?php echo $user_data->birthYear; ?></td>
</tr>
<tr>
<td>email</td>
<td> <?php echo $user_data->email; ?></td>
</tr>
<tr>
<td>phone</td>
<td> <?php echo $user_data->phone; ?></td>
</tr>
<tr>
<td>address</td>
<td> <?php echo $user_data->address; ?></td>
</tr>
<tr>
<td>country</td>
<td> <?php echo $user_data->country; ?></td>
</tr>
<tr>
<td>region</td>
<td> <?php echo $user_data->region; ?></td>
</tr>
<tr>
<td>city</td>
<td> <?php echo $user_data->city; ?></td>
</tr>
<tr>
<td>zip</td>
<td> <?php echo $user_data->zip; ?></td>
</tr>
</tbody>
</table>
<?php
} catch (Exception $e) {
switch ($e->getCode()) {
case 0 : $error = "Unspecified error.";
break;
case 1 : $error = "Hybriauth configuration error.";
break;
case 2 : $error = "Provider not properly configured.";
break;
case 3 : $error = "Unknown or disabled provider.";
break;
case 4 : $error = "Missing provider application credentials.";
break;
case 5 : $error = "Authentification failed. The user has canceled the authentication or the provider refused the connection.";
break;
case 6 : $error = "User profile request failed. Most likely the user is not connected to the provider and he should to authenticate again.";
$adapter->logout();
break;
case 7 : $error = "User not connected to the provider.";
$adapter->logout();
break;
}
$error .= "<br /><br /><b>Original error message:</b> " . $e->getMessage();
$error .= "<hr /><pre>Trace:<br />" . $e->getTraceAsString() . "</pre>";
echo $error;
}
}
}
if (isset($_SESSION['user_name']) && $_SESSION['user_name'] != NULL) {
echo 'Hello : ', $_SESSION['user_name'], ' login with ', $_SESSION['provider'];
echo '<hr/><a href="./share.php">Share</a> | <a href="./?action=logout">Logout</a>';
} else {
echo '<a href="./?action=Google">Google login</a>';
}
?>
เมื่อกดลิงก์ Google login ก็จะ Redirect ไปยัง Provider ที่ผู้ใช้งาน login
จากนั้น ระบบก็จะกลับมายังเว็บของเรา
ตัวอย่างการ Post ข้อความไปยัง Facebook ต้อง Login ด้วย Facebook ก่อน
share.php
session_start();
$config = dirname(__FILE__) . '/hybridauth/config.php';
require_once( "./hybridauth/Hybrid/Auth.php" );
$hybridauth = new Hybrid_Auth($config);
$adapter = $hybridauth->authenticate($_SESSION['provider']);
$caption = 'Click to see my trip.';
$adapter->api()->api("/me/feed", "post", array(
"message" => 'Test share data',
"picture" => "http://12go.asia/images/icon.png",
"link" => "http://" . $_SERVER['SERVER_NAME'] . '/Your_url/',
"name" => "Name of data",
"caption" => $caption
));
|
|
|
|
|
|
|
|
By : |
T-MONROE
|
|
Article : |
บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ |
|
Score Rating : |
|
|
Create Date : |
2013-01-12 |
|
Download : |
(0.2274 MB) |
|
Sponsored Links |
|
|
|
|
|
|