[PHP] Sử dụng Facebook SDK để lấy Facebook Page ID
Trong bài viết hôm trước tôi đã tổng hợp một số cách đơn giản để lấy thông tin trang Facebook cá nhân, nhóm, fan page và Facebook Page ID dành cho người dùng thông thường và lập trình viên. Và hôm nay tôi sẽ sử dụng một cách khác để lấy Facebook ID cũng như thông tin của 1 page nào đó với Facebook SDK for PHP.
Đầu tiên các bạn download Facebook SDK tại GitHub.
Sau khi tải về và giải nén thì các bạn sẽ được các file và thư mục như sau
Các bạn có thể làm tìm hiểu về cách lập trình với Facebook SDK qua những bài viết dưới đây
- Làm quen với lập trình Facebook SDK v.3.1.1
- Viết ứng dụng cho facebook thật đơn giản
- Hướng dẫn viết ứng dụng cho facebook
1, Tạo form nhập dữ liệu
Đầu tiên tôi sẽ tạo 1 form đơn giản để người dùng nhập đường dẫn chứa Facebook Page
<form id="get_facebook_id_form" action="" method="post">Enter your personal Facebook profile URL: <input id="get_facebook_page_input" name="facebook_profile" size="50" type="text" value="<?php echo $facebook_profile; ?>" placeholder="http://www.facebook.com/YourProfileName" />" <input name="Submit" type="submit" value="Lookup numeric ID…" /> </form>
Với đoạn code tạo form trên, các bạn cần chú ý 2 điểm. Đó là tôi sử dụng thuộc tính id=”get_facebook_id_form” để validate form và thuộc tính value trong thẻ input thì tôi chèn biến $facebook_profile. Tôi sẽ giải thích ý nghĩa của biến $facebook_profile ở các mục dưới.
2, Validate form (Xác thực dữ liệu người dùng nhập vào)
Đối với 1 form bất kì thì lúc nào các bạn cũng phải validate (xác thực ) dữ liệu nhập vào. Nếu bạn là một lập trình viên Web thì tôi nghĩ đây là một thói quen mà bạn nên duy trì. Điều này sẽ giúp bảo mật trang web tốt hơn, đồng thời sẽ nâng cao sự chuyên nghiệp của bạn. Với phạm vi bài viết này, tôi sẽ sử dụng một số cách đơn giản với jQuery để validate form.
<script> $(document).ready(function(){ $('#get_facebook_id_form').submit(function(){ var check = true; var facebook_link = $("#get_facebook_page_input").val(); if(!$.trim(facebook_link).length) { alert("Please enter your personal Facebook profile URL."); check = false; } else if(!IsUrl(facebook_link)) { alert("Invalid URL. Please try again!"); check = false; } return check; }); }) function IsUrl(s) { var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; return regexp.test(s); } </script>
3, Sử dụng Facebook SDK để lấy thông tin trang và Facebook Page ID
Việc sử dụng Facebook SDK để lấy thông tin Facebook Page chỉ là một tính năng nhỏ trong một bộ SDK lớn với rất nhiều hàm dùng để thực hiện các chức năng khác nhau, đa dạng.
Sau khi đã có đường dẫn Facebook Page mà người dung nhập vào form thì tôi sẽ dùng Regular Expressions (biểu thức chính quy) để lọc lấy username/alias của trang đó và dùng hàm Facebook::api(/* polymorphic */) để lấy thông tin
<?php require 'facebook-php-sdk/src/facebook.php'; if (isset($_POST['facebook_profile']) && !empty($_POST['facebook_profile'])) { $result = ''; $facebook_profile = trim($_POST['facebook_profile']); // Get Page_ID if (strpos($facebook_profile, 'www.facebook.com/profile.php') !== false) { preg_match('/(?:(?:http|https):\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-]*)?/', $facebook_profile, $matches); } else { preg_match('/(?:https?:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-\.]*)/', $facebook_profile, $matches); } if (!empty($matches)) { $facebook_id = $matches[1]; $facebook = new Facebook(array( 'appId' => '344617158898614', 'secret' => '6dc8ac871858b34798bc2488200e503d', )); try { $profile = $facebook->api('/' . $facebook_id); if (!empty($profile)) { $result = $profile['id']; $name = $profile['name']; } } catch(Exception $e) { //Show error message } } } ?>
4, Hiển thị kết quả
Bước cuối cùng thì các bạn chỉ cần lựa chọn vị trí thích hợp để hiển thị kết quả cho người dùng
<?php if (!empty($result)) { echo '<strong>Success!</strong> If your name is <span style="font-style: italic;">'. $name .',</span> then we found your numeric ID: <span style="font-weight: bold; color: red; font-size: 20px;">'. $result .'</span>'; } else { echo '<span style="font-weight: bold; color: red;">Unable to lookup Facebook numeric ID.</span>'; } ?>
Và đây là kết quả demo nhận được
Hi vọng bài viết này sẽ giúp ích cho các bạn. Thân ái!
Facebook nâng cấp, cái này bị lỗi rồi bác..bác coi có fix đc không thì hướng dẫn cho ae nhờ ạ.
Cho mình hỏi ứng dụng này sử dụng để làm gì? Mình thấy trong phần my apps của mình nhưng không biết
Facebook đã thay đổi mình làm theo hướng dẫn mà ko đc 🙁
tại sao mình làm theo hướng dẫn mà vẫn không được nhỉ