Go Back   Diễn Đàn Bo-Blog Việt Nam > Bo-Blog > Modules & Scripts Bo-blog



About Me
Your Avatar

 
Trả lời Gởi Ðề Tài Mới
 
Ðiều Chỉnh Kiếm Trong Bài
  #1  
Old 17-12-2013, 01:47 PM
NamCòi's Avatar
NamCòi is offline
KUTE
 
Tham gia ngày: Feb 2010
Đến từ: Vannamdl.net
Bài gởi: 3,051
Default Hướng dẫn tạo module đăng nhập bo-blog bằng facebook

Sau một thời gian yên lặng thì hôm nay levis012 đã cho ra mắt module đăng nhập bo-blog bằng nick facebook. Vì 1 số lý do levis012 không đăng bài trên forum nên yêu cầu mình đăng lại, Bạn nào có thắc mắc khi cài module đăng nhập bo-blog bằng facebook thì có thể để lại câu hỏi levis012 sẽ trả lời các bạn.

Click the image to open in full size.
Các bạn có thẻ xem demo tại đây: http://demo.vietboblog.net/huong-dan...-facebook.html
Các bạn có thể đăng câu hỏi ngay tại trang demo để được hỗ trợ nhanh.

1.Đầu tiên bạn cần tạo 1 ứng dụng facebook.
Các bạn vào link https://developers.facebook.com/apps để đăng ký và tạo 1 ứng dụng. Sau khi tạo xong bạn sẽ nhận được 2 thông tin sau.
App ID/API Key
App Secret
2 cái này dùng để config cho ứng dụng của bạn.

2.Tiếp theo sau khi xong các bạn cần download bộ SDK PHP của facebook. Đây là các class để giao tiếp với facebook thông qua app.
Download tại đây https://github.com/facebook/facebook-php-sdk
sau khi download xong các bạn giải nén sẽ được vài file và thư mục src. các bạn tạo 1 folder facebook ngang hàng với file global.php sau đó upload thư mục src ở folder vừa giải nén lên host.
Cấu trúc thư mục sẽ có dạng

facebook/src/facebook.php
facebook/src/base_facebook.php
facebook/src/fb_ca_chain_bundle.crt


3.Bây giờ đến phần sửa code. Đầu tiên mở file global.php và thêm xuống cuối
require 'facebook/src/facebook.php';
$fb_cfg['appId']  =  'xxxxxxxxx';
$fb_cfg['secret']  =  'xxxxxxxxxxx';
$fb_cfg['cookie']  =  true;
 
function vietbb_checkLogin()
{
  global $fb_cfg, $token;
 
  $vietbb_facebook  =  new Facebook($fb_cfg);
 
  $user = $vietbb_facebook->getUser();
 
  if ( $user )
  {
    try{
      $user_profile  =  $vietbb_facebook->api('/me');
       
      $logoutUrl     =   $vietbb_facebook->getLogoutUrl(array('next' => 'http://demo.vietboblog.net/facebook/logout.php'));
 
      $res       =  array(
          'id'    =>  $user_profile['id'],
          'username'  =>  $user_profile['username'],
          'fullname'  =>  $user_profile['name'],
          'email'    =>  $user_profile['email'],
          'link'    =>  $user_profile['link'],
          'logOutUrl'  =>  $logoutUrl,
          'logged'  =>  true
      );
 
      return $res;
    } catch ( FacebookApiException $e ){
       
      $loginUrl = $vietbb_facebook->getLoginUrl(array('scope'=>'email, publish_stream'));
 
      echo "Please login again <a href = \"$logInUrl\">Login to vietboblog demo</a>";
      exit(0);
    }
  }
  else
  {
    $loginUrl = $vietbb_facebook->getLoginUrl(array('scope'=>'email, publish_stream'));
 
    $res       =  array(
        'logInUrl'  =>  $loginUrl,
        'logged'  =>  false
    );
    return $res;    
  }
}
 
 
 
function vietbb_logOut()
{
  global $fb_cfg;
  $vietbb_facebook  =  new Facebook($fb_cfg);
  $vietbb_facebook->destroySession();
}
 
 
function vietbb_post($message = '')
{
    global $fb_cfg;  //Su dung bien global
 
    //Khoi tao class facebook
    $vietbb_facebook  =  new Facebook($fb_cfg);
 
    //Lay thong tin nguoi dung
    $user_profile  =  $vietbb_facebook->api('/me');
 
    //  Kiem tra va post
    if ( $message == '' )
      $postid  =  $vietbb_facebook->api('/me/feed','POST',
        array(
        'message' => 'Ban '.$user_profile['username'].' Vua tham gia cong dong vietboblog....',
        'link'  => 'http://demo.vietboblog.net/'
      ));
    else
      $postid  =  $vietbb_facebook->api('/me/feed','POST',
        array(
        'message' => $message,
        'link'  => 'http://demo.vietboblog.net/'
      ));
}
Nhớ sửa lại link web của bạn cho phù hợp, và nội dung message cho phù hợp.
Phần appId và secret các bạn nhớ config lại cho phù hợp với thông số app của bạn.
Tiếp theo mở file login.php thay thế toàn bộ bằng đoạn code sau.
<?php
 
if ( $_GET['service'] == 'facebook' )
{
  include_once("global.php");
 
  unset($vietbb_facebook);
 
  $vietbb_facebook  =  vietbb_checkLogin();
 
  //  Kiem tra xem tai khoan nay da dang nhap chua
  if ( $vietbb_facebook['logged'] )  //  Neu da dang nhap roi
  {
     
    $count_user    =  $blog->countbyquery("SELECT count(userid) FROM `{$db_prefix}user` WHERE `username` = '{$vietbb_facebook['username']}'");
 
    if ( $count_user == 0 )  //  Kiem tra xem da co trong co so du lieu chua, chua co thi them vao
    {
      vietbb_post();
      $maxrecord=$blog->getsinglevalue("{$db_prefix}maxrec");
      $currentuserid  =  $maxrecord['maxuserid']+1;
 
      $username    =  $vietbb_facebook['username'];
      $password    =  md5(time());
      $time      =  time();  
      $email      =  $vietbb_facebook['email'];
      $homepage    =  $vietbb_facebook['link'];
 
      $blog->query("INSERT  INTO `{$db_prefix}user` VALUES ('{$currentuserid}', '{$username}',  '{$password}', '{$time}', '1', '{$email}', '{$homepage}', '0', NULL,  NULL, '0', NULL, NULL, '0', NULL, NULL);");
      $blog->query("UPDATE `{$db_prefix}maxrec` SET `maxuserid`=`maxuserid`+1");
      $blog->query("UPDATE `{$db_prefix}counter` SET `users`=`users`+1");
    }
 
    //  Kich hoat che do dang nhap
 
    $username=safe_convert(mystrtolower($vietbb_facebook['username']));
    plugin_runphp('loginprocess');
    $try=$blog->getbyquery("SELECT * FROM `{$db_prefix}user` WHERE LOWER(username)='{$username}' ");
    if (!is_array($try)) {
      catcherror ($lnc[166]);
    } else {
      $userid=$try['userid'];
      if ($savecookie==0) {
        setcookie ('userid', $userid);
        setcookie ('userpsw', $try['userpsw']);
      } else {
        $savecookielong=3600*24*30;
        setcookie ('userid', $userid, time()+$savecookielong);
        setcookie ('userpsw', $try['userpsw'], time()+$savecookielong);
      }
      $redirection=array("{$lnc[163]}|index.php");
      if ($try['usergroup']=='2') {
        $redirection[]="{$lnc[107]}|admin.php";
        $redirection[]="{$lnc[108]}|admin.php?act=edit";
      }
      catchsuccess ("{$lnc[167]} ".$username, $redirection);
    }
 
 
 
  }else{  //Neu chua dang nhap thi phai dang nhap
    header("Location:" . $vietbb_facebook['logInUrl']);
  }
 
  exit(0);
}
 
$act="login";
define ('isLogin', 1);
require ("index.php");
 
?>
Tiếp theo mở file

inc/mod_login.php

tìm đoạn code
PHP Code:
if ($job=='logout') { 
thêm xuống dưới
PHP Code:
vietbb_logOut(); 
Như vậy là xong rồi.
Để đăng nhập bằng facebook, các bạn chỉ cần truy cập dạng domain.com/login.php?service=facebook

Các bạn thử xem, có thắc mắc gì vui lòng comment ở dưới levis012 sẽ giúp đỡ.

Dem
Chữ ký của NamCòi
Click the image to open in full size.Click the image to open in full size.
Trả Lời Với Trích Dẫn
  #2  
Old 04-03-2014, 03:20 AM
kephongluuv's Avatar
kephongluuv kephongluuv is offline
Member
 
Tham gia ngày: Oct 2010
Bài gởi: 70
Default

Đã làm giống hệt như không thấy nút login facebook đâu cả @@
Trả Lời Với Trích Dẫn
  #3  
Old 10-05-2014, 08:26 PM
donaltqt89's Avatar
donaltqt89 donaltqt89 is offline
Member
 
Tham gia ngày: Apr 2011
Bài gởi: 88
Default

<font color="#333333" face="lucida grande, tahoma, verdana, arial, sans-serif">
PHP Code:
URL đã cho không được cấu hình Ứng dụng cho phép.: Một hoặc nhiều URL đã cung cấp không được thiết lập Ứng dụng cho phépURL phải khớp với một trong những URL trang web hoặc URL trang nền hoặc miền phải là miền phụ của một trong những miền của Ứng dụng


Lổi này là bị sao vậy a Nam
Trả Lời Với Trích Dẫn
  #4  
Old 10-05-2014, 08:54 PM
NamCòi's Avatar
NamCòi NamCòi is offline
KUTE
 
Tham gia ngày: Feb 2010
Đến từ: Vannamdl.net
Bài gởi: 3,051
Default

Trích:
Nguyên văn bởi donaltqt89 View Post
<font color="#333333" face="lucida grande, tahoma, verdana, arial, sans-serif">
PHP Code:
URL đã cho không được cấu hình Ứng dụng cho phép.: Một hoặc nhiều URL đã cung cấp không được thiết lập Ứng dụng cho phépURL phải khớp với một trong những URL trang web hoặc URL trang nền hoặc miền phải là miền phụ của một trong những miền của Ứng dụng


Lổi này là bị sao vậy a Nam
Bạn cấu hình trong trang developers facebook như hình này nhé.
Click the image to open in full size.
Chữ ký của NamCòi
Click the image to open in full size.Click the image to open in full size.
Trả Lời Với Trích Dẫn
  #5  
Old 10-05-2014, 09:22 PM
donaltqt89's Avatar
donaltqt89 donaltqt89 is offline
Member
 
Tham gia ngày: Apr 2011
Bài gởi: 88
Default

PHP Code:
http://thanhblog.info/login.php?service=facebook&code=AQDEB8AhQSlU5QgfE1flSXOiRkk7JBA3ZvdzvW3hYo1M4bqxF1udceys94LhfEjN0lWYIvimA_AKddi-rhhDL7kFQ4_DfVs_UyUfpV_2i5k48p8CuriyCIGd1GfJ9UgqYokg1o0cqH7kEX8q4PvuUtYGuCpi92iW-6Hfm3UMthPHHepP0xAp_tALXKgOupkrGeAKhs64LRD3eKkZA0FTCysLD0ZCISxABzh1h_pTVQtdX84w36rtJfyKKMZOBsoas-7LIY3p0ZnfJ20y233-s35g5I7deBgHp1NgroIp5rpjpwaGOg6AF1OYCc7-Lf7hR8Q&state=b982d0312aa1024af4ea7ed81cfb4345#_=_ 
Cấu hình xong thì chạy tới đoạn này ko load đc nửa a Nam ơi!
Trả Lời Với Trích Dẫn
  #6  
Old 10-05-2014, 09:29 PM
NamCòi's Avatar
NamCòi NamCòi is offline
KUTE
 
Tham gia ngày: Feb 2010
Đến từ: Vannamdl.net
Bài gởi: 3,051
Default

Cái này lỗi của bạn do chưa cấu hình đúng appId và secret nó mới bị thôi. Xem lại bạn điền appId và secret ở file gobal.php đúng như trong fb cấp chưa
Chữ ký của NamCòi
Click the image to open in full size.Click the image to open in full size.
Trả Lời Với Trích Dẫn
  #7  
Old 10-05-2014, 09:56 PM
donaltqt89's Avatar
donaltqt89 donaltqt89 is offline
Member
 
Tham gia ngày: Apr 2011
Bài gởi: 88
Default

require 'facebook/src/facebook.php';$fb_cfg['appId']  =  '705765422819682';$fb_cfg['secret']  =  'e01093a03bd3a716cab0621a2f3b65fe';$fb_cfg['cookie']  =  true; function vietbb_checkLogin(){  global $fb_cfg, $token;   $vietbb_facebook  =  new Facebook($fb_cfg);   $user = $vietbb_facebook->getUser();   if ( $user )  {    try{      $user_profile  =  $vietbb_facebook->api('/me');             $logoutUrl     =   $vietbb_facebook->getLogoutUrl(array('next' => 'http://thanhblog.info/facebook/logout.php'));       $res       =  array(          'id'    =>  $user_profile['id'],          'username'  =>  $user_profile['username'],          'fullname'  =>  $user_profile['name'],          'email'    =>  $user_profile['email'],          'link'    =>  $user_profile['link'],          'logOutUrl'  =>  $logoutUrl,          'logged'  =>  true      );       return $res;    } catch ( FacebookApiException $e ){             $loginUrl = $vietbb_facebook->getLoginUrl(array('scope'=>'email, publish_stream'));       echo "Please login again <a href = \"$logInUrl\">Login to ThanhBLog</a>";      exit(0);    }  }  else  {    $loginUrl = $vietbb_facebook->getLoginUrl(array('scope'=>'email, publish_stream'));     $res       =  array(        'logInUrl'  =>  $loginUrl,        'logged'  =>  false    );    return $res;      }
Anh Nam coi hộ em code này đúng chưa nha!
App Secret : e01093a03bd3a716cab0621a2f3b65fe
Mã ứng dụng: 705765422819682

thay đổi nội dung bởi: donaltqt89, 10-05-2014 lúc 09:59 PM
Trả Lời Với Trích Dẫn
  #8  
Old 11-05-2014, 07:31 AM
NamCòi's Avatar
NamCòi NamCòi is offline
KUTE
 
Tham gia ngày: Feb 2010
Đến từ: Vannamdl.net
Bài gởi: 3,051
Default

Bạn có điền app domain như hình mình đăng ở trên không
Chữ ký của NamCòi
Click the image to open in full size.Click the image to open in full size.
Trả Lời Với Trích Dẫn
  #9  
Old 11-05-2014, 02:31 PM
donaltqt89's Avatar
donaltqt89 donaltqt89 is offline
Member
 
Tham gia ngày: Apr 2011
Bài gởi: 88
Default

Có chứ anh

Click the image to open in full size.
Trả Lời Với Trích Dẫn
  #10  
Old 15-05-2014, 10:15 AM
aboq's Avatar
aboq aboq is offline
Member
 
Tham gia ngày: Dec 2012
Bài gởi: 57
Default

Trích:
Nguyên văn bởi donaltqt89 View Post
Có chứ anh

Click the image to open in full size.
Mình cũng bị y như bạn, Nam còi hướng dẫn fix với
Chữ ký của aboq wWw.NeuCan.Net - My Blog's
Trả Lời Với Trích Dẫn
Trả lời Gởi Ðề Tài Mới

Tags
bo-blog, dẫn, facebook, hướng, module

Ðiều Chỉnh Kiếm Trong Bài
Kiếm Trong Bài:

Kiếm Chi Tiết

Chuyển đến


Múi giờ GMT. Hiện tại là 06:34 AM.
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
vdata

Bo-Blog Việt Nam

Bo-blog
9.9 10 13259