Бальзам account fb connect php. Це правильний спосіб зробити FB Connect? Реєстрація програми у фб

login api (3)

Я вважаю, що вам потрібно повернути false, щоб запобігти нормальній поведінці посилання. Щодо перенаправлення, я роблю це на своєму сайті:

Logout

Я не зовсім впевнений, чому ваш logoutAndRedirect не працює, але цей пост може пролити світло: http://forum.developers.facebook.com/viewtopic.php?id=38549 .

Мій рядок ініціалізації:

Мій вихід із системи:

Log Out

У мене є діючий сеанс у моєму webapp та дійсний сеанс Facebook, тому що мій користувач показує pic-шоу.

Єдиний спосіб, за допомогою якого я можу змусити Facebook правильно вийти з цієї функції або .logout(), - це кинути

return false;

у суміш, так:

Log Out

Це все одно не перенаправляє ніде. Програма просто сидить там після виходу з Facebook, тому сеанс сайту все ще живе та зламано.

Це страшенно засмучує, тому, якщо хтось може викласти, чому це не буде перенаправлено, я всі вуха.

Знаходила функція, яку хтось написав, щоб запустити вихід у Facebook та перенаправити правильно. Це чудово працює.

Javascript code : function fBlogout ()( try ( FB . Connect . ifUserConnected (function ()( FB . Connect . logoutAndRedirect (); ), "http://fullurl.com/account/logout"); ) catch (e) (location. href = "http://fullurl.com/account/logout"; ) ) HTML Link :< a href = "#" onclick = "FBlogout(); return false;" >Log OutPHP code for logout : $facebook -> expire_session(); $facebook -> logout (MAIN_SITE_URL);

Це має працювати майже у всіх браузерах:

Var xhr=new XMLHttpRequest(); xhr.onload=function()( console.log(xhr.responseText); ) xhr.open("GET","https://12Me21.github.io/test.txt"); xhr.send();

Крім того, є новий API Fetch:

Fetch("https://12Me21.github.io/test.txt") .then(response => response.text()) .then(text => console.log(text))

Nowadays веб-користувачів не займаються в filling a big form for registration on the website. Шорти registration process helps to get more subscribers до вашого веб-сайту. Login with Facebook is a quick and powerful way to integrate registration and login system on the website. Facebook є найбільшою популярною соціальною мережею і найбільшою кількістю користувачів, що на Facebook account. Facebook Login allows users to sign in the your website using their Facebook account credentials without sign up on your website.

PHP SDK дозволяє використовувати Facebook API з веб-застосування. Ви можете легко реалізувати підписку з Facebook рахунок за допомогою Facebook SDK для PHP. У цьому розділі буде показано, як ви можете скористатися електронною поштою та реєстрацією системи з Facebook, використовуючи PHP і зареєструвати user profile data в MySQL Database. Наші example Facebook Login script use Facebook PHP SDK v5 with Facebook Graph API to build Facebook Login system with PHPі MySQL.

To get started with the latest version of Facebook SDK v5.x, Make sure your system meets the following requirements.

  • Navigate to the Settings » Basic page.
  • Navigate to the Facebook Login » Settings page.
    • In the Valid OAuth Redirect URIs field, enter the Redirect URL.
    • Click the Save Changes.
  • Go to the Settings » Basic page, note the App ID and App Secret. Цей App ID і App secret надає вам Facebook APIs.

    Зверніть увагу, що: App ID і App secret потрібна для того, щоб бути визначена в script в часі Facebook API call. Also, the Valid OAuth Redirect URIs must be matched with the Redirect URL that specified in the script.

    Get the Profile Link and Gender

    Для того, щоб retrieve the user's Facebook timeline link and gender, вам потрібна submit a request for user_link and user_gender permissions.


    Після того, як процес перегляду буде зроблений і прийнятий на Facebook, ви будете мати змогу отримати користувача profile link and genderвід Facebook Graph API.

    Do you want a detailed guide на Facebook App creation? Go through this guide to .

    Create Database Table

    Завантажити User's profile information з Facebook, table needs to be created in the database. Наступні SQL створюють users table з деякими basic fields в MySQL Database to hold the Facebook account information.

    CREATE TABLE `users` (`id` int (11 ) NOT NULL AUTO_INCREMENT, `oauth_provider` enum("" ,"facebook" ,"google" ,"twitter" ) COLLATE utf8_unicode_ci NOT NULL , `oauth_uid` var utf8_unicode_ci NOT NULL , `first_name` varchar (25 ) COLLATE utf8_unicode_ci NOT NULL , `last_name` varchar (25 ) NULL , `picture` varchar (200 ) COLLATE utf8_unicode_ci NOT NULL , `link` varchar (100 ) COLLATE utf8_unicode_ci NOT NULL , `created` datetime NOT NULL , `modified` datetime NOT NU InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

    Facebook SDK for PHP

    The facebook-php-graph-sdk/ directory містить нову версію (v5) з Facebook SDK для PHP. Ви не повинні довантажити його окремо, всі необхідні файли з Facebook PHP SDK v5 є в нас Facebook Login PHP source code.

    User Class (User.class.php)

    У User class handles the database related operations (connect, insert, and update) using PHP and MySQL. Це дає змогу підключитися до вашого database and insert/update Facebook account data in the users table.

    • __construct()- Connect to the MySQL database.
    • checkUser()– Insert or update the user profile data базується на OAuth provider and ID. Returns the user's account data as an array.
    /* * User Class * Ця категорія використовується для вашого database related (connect, insert, and update) operations * @author сайт * @url http://www.сайт * @license http://www.сайт/license */ class User ( private $dbHost = DB_HOST ; private $dbUsername = DB_USERNAME ; private $dbPassword = DB_PASSWORD ; private $dbName = DB_NAME ; private $userTbl = DB_USER_TBL ; function __construct ()( if(!isse ) ( // Connect to the database $conn = новий mysqli ($this -> dbHost , $this -> dbUsername , $this -> dbPassword , $this -> dbName ); if($conn -> connect_error )( die( "Failed to connect with MySQL: ". $ conn -> connect_error); )else( $this -> db = $conn ; ) ) ) function checkUser ($userData = array())( if(!empty($userData ))( // Check whether user data already exists in database$prevQuery = "SELECT * FROM". $this -> userTbl . " WHERE oauth_provider = "" . $userData [ "oauth_provider" ]. "" AND oauth_uid = "" . $userData [ "oauth_uid" ]. """ ; $prevResult = $this -> db -> query ($prevQuery ); if($prevResult -> num_rows > 0 )( // Update user data if already exists$query = "UPDATE". $this -> userTbl . " SET first_name = "" . $userData [ "first_name" ]. "", last_name = "" . $userData [ "last_name" ]. "", email = "" . gender = "" . $userData [ "gender" ]. "", picture = "" . $userData [ "picture" ]. "", link = "" . $userData [ "link" ]. "", modified = NOW() WHERE oauth_provider = "". $userData ["oauth_provider"]. "" AND oauth_uid = "" . $userData ["oauth_uid"]. """ ; $update = $this -> db -> query ($query ); )else( // Insert user data $query = "INSERT INTO " . $this -> userTbl . " SET oauth_provider = "" . $ userData [ "oauth_provider" ]. "", oauth_uid = "" . $userData [ "oauth_uid" ]. "", first_name = "" . $userData [ "first_name" ]. "", last_name = "" . "last_name" ]. "", email = "" . $userData [ "email" ]. "", gender = "" . $userData [ "gender" ]. "", picture = "" . " ]. "", link = "" . $userData [ "link" ]. "", created = NOW(), modified = NOW()"; $insert = $this -> db -> query ($query); ) // Get user data from the database$result = $this -> db -> query ($prevQuery ); $userData = $result -> fetch_assoc(); ) // Return user data return $userData; )

    Site Settings and API Configuration (config.php)

    Database settings and Facebook API configuration constant variables defined in the config.php file.
    Database Constants:

    Call Facebook API:

    /* * Basic Site Settings and API Configuration */ // Database configuration define ("DB_HOST", "MySQL_Database_Host"); define ("DB_USERNAME", "MySQL_Database_Username"); define ("DB_PASSWORD", "MySQL_Database_Password"); define ("DB_NAME", "MySQL_Database_Name"); define ("DB_USER_TBL", "users"); // Facebook API configuration define ("FB_APP_ID", "Insert_Facebook_App_ID"); define ("FB_APP_SECRET", "Insert_Facebook_App_Secret"); define ("FB_REDIRECT_URL", "Callback_URL"); // Start session if(! session_id())( session_start(); ) // Include the autoloader, створений в SDK require_once __DIR__ . "/facebook-php-graph-sdk/autoload.php"; // Include required libraries use Facebook\Facebook; use Facebook \ Exceptions \ FacebookResponseException; use Facebook \ Exceptions \ FacebookSDKException ; // Call Facebook API $fb = новий Facebook (array("app_id" => FB_APP_ID , "app_secret" => FB_APP_SECRET , "default_graph_version" => "v3.2" ,)); // Get redirect login helper $helper = $fb -> getRedirectLoginHelper(); // Try to get access token try ( if(isset($_SESSION [ "facebook_access_token" ]))) ( $accessToken = $_SESSION [ "facebook_access_token" ]; )else( $accessToken = $helper -> getAccessToken (); ) ) catch(FacebookResponseException $e ) ( echo "Graph returned an error: " . $e -> getMessage (); exit; ) catch(FacebookSDKException $e ) ( echo . $e -> getMessage (); exit; )

    Зверніть увагу, що ви використовуєте потрібні ідентифікатори ідентифікаторів.

    Login & Get Facebook Account Data (index.php)

    У цьому файлі, Facebook API authentication process is handled using PHP.

    setDefaultAccessToken ($_SESSION ["facebook_access_token"]); )else( // Put short-lived access token in session$_SESSION ["facebook_access_token"] = (string) $accessToken ; // OAuth 2.0 client handler helps to manage access tokens$oAuth2Client = $fb -> getOAuth2Client(); // Exchanges a short-lived access token for a long-lived one$longLivedAccessToken = $oAuth2Client -> getLongLivedAccessToken ($_SESSION ["facebook_access_token"]); $_SESSION [ "facebook_access_token" ] = (string) $longLivedAccessToken ; // Set default access token to be used in script$fb -> setDefaultAccessToken ($_SESSION ["facebook_access_token"]); ) // Redirect the user back to the same page if url has "code" parameter in query string if(isset($_GET [ "code" ]))( header ("Location: ./" ); ) // Getting user"s profile info from Facebook try ( $graphResponse = $fb -> get ( "/me?fields=name,first_name,last_name,email,link,gender,picture"); $fbUser = $graphResponse -> getGraphUser(); ) catch(FacebookResponseException $e ) ( echo "Graph returned an error: " . $e -> getMessage(); session_destroy(); // Redirect user back to app login page header ("Location: ./"); exit; ) catch(FacebookSDKException $e ) ( echo "Facebook SDK відновлений an error: ". $e -> getMessage(); exit; ) // Initialize User class $user = new User(); // Getting user"s profile data$fbUserData = array(); $fbUserData [ "oauth_uid" ] = !empty($fbUser [ "id" ])? $fbUser [ "id" ]: "" ; $fbUserData [ "first_name" ] = !empty($fbUser [ "first_name" ])? $fbUser [ "first_name" ]: "" ; $fbUserData [ "last_name" ] = !empty($fbUser [ "last_name" ])? $fbUser [ "last_name" ]: "" ; $fbUserData [ "email" ] = !empty($fbUser [ "email" ])? $fbUser [ "email" ]: "" ; $fbUserData [ "gender" ] = !empty($fbUser [ "gender" ])? $fbUser [ "gender" ]: "" ; $fbUserData [ "picture" ] = !empty($fbUser [ "picture" ][ "url" ])? $fbUser [ "picture" ][ "url" ]: "" ; $fbUserData [ "link" ] = !empty($fbUser [ "link" ])? $fbUser [ "link" ]: "" ; // Insert or update user data to the database$fbUserData [ "oauth_provider" ] = "facebook" ; $userData = $user -> checkUser ($fbUserData); // Storing user data in the session$_SESSION ["userData"] = $userData; // Get logout url $logoutURL = $helper -> getLogoutUrl ($accessToken, FB_REDIRECT_URL. "logout.php"); // Render Facebook profile data if(!empty($userData ))( $output = "

    Facebook Profile Details

    "
    ; $output .= "
    " ; $output .= " " ; $output .= "

    Facebook ID:" . $userData [ "oauth_uid" ]. "

    " ; $output .= "

    Name:" . $userData [ "first_name" ]. " " . $userData [ "last_name" ]. "

    " ; $output .= "

    Email:" . $userData [ "email" ]. "

    " ; $output .= "

    Gender:" . $userData [ "gender" ]. "

    " ; $output .= "

    Logged in with: Facebook

    "
    ; $output .= "

    Profile Link:. $userData ["link"]. "" target="_blank">Click to visit Facebook page

    "
    ; $output .= "

    Logout from Facebook

    " ; $output .= "
    " ; )else( $output = "

    Один з проблем, що виникли, викликають спроби.

    "
    ; ) )else( // Get login url $permissions = [ "email" ]; // Optional permissions $loginURL = $helper -> getLoginUrl (FB_REDIRECT_URL , $permissions ); // Render Facebook login button$output = """> " ; } ?> <html lang="en-US" > <head > <title > Login with Facebook using PHP by CodexWorldtitle > <meta charset = "utf-8" > head > <body > <div class = "container" > <div class = "fb-box" > div > div > body > html >

    Logout (logout.php)

    Якщо user wishes log out з їх Facebook аккаунт, logot.php file loaded.

    • Remove access token and user data from the SESSION.
    • Redirect user до homepage.
    // Remove access token from session unset($_SESSION ["facebook_access_token"]); // Remove user data from session unset($_SESSION ["userData"]); // Redirect to the homepage header ("Location:index.php"); ?>

    Conclusion

    У цьому розділі, ми робимо те, як Facebook Login implementation quicker and easier. Наведені нижче коди integrates Facebook Login with Facebook SDK для PHP. Ви не повинні додати до SDK library файли окремо, наші джерела коду містять усі необхідні файли з SDK v5 для PHP. Ви тільки потрібні певні деякі мінімальні налаштування для створення сайту з Facebook до вашого веб-сайту за допомогою PHP. Для того, щоб Facebook ввімкнути більше user-friendly, ви можете використовувати JavaScript SDK для integrate .

    Чи є ви, щоб отримати implementation help, або modify або extend the functionality of this script?

    Facebook є найбільш популярними соціальними медіа і Shares на Facebook wall є most використовуваний activity by його користувача. Facebook share option is a common and required feature for every web application. Може бути, що share the post на Facebook manually or from the script. In this tutorial, you’ll learn how to post activity на Facebook wall from website using PHP and Facebook API.

    Post до Facebook wall is useful when you want to post dynamic content to Facebook from the website. Here we'll build a simple PHP script to publish Facebook post from website using Facebook PHP SDK. Це функціонування повідомлень user submit the post (message, picture, link, text content) on their Facebook timeline from the website using PHP SDK v5.0 та Facebook Graph API.

    Після того, як постачати до електронної пошти на Facebook wall, використовуючи PHP, прийняли на екрані файли і складники структури.

    Facebook Apps Creation

    Завантажити Facebook API, App ID & App Secret потрібний для того, щоб бути встановленим на Facebook API call. Вам потрібно створити Facebook App для створення App ID & App Secret. If you’re not already створено на Facebook app, visit the link below to create and configure на Facebook App from the App Dashboard.

    Після завершення Facebook App створення та configuration you’ll отримати App ID and App secret. Copy this App ID and App Secretз вашого Facebook App для останнього використання.

    Facebook SDK for PHP v5.0

    All Facebook PHP SDK файли включаються в facebook-php-sdk/ directory, place the facebook-php-sdk/ folder into root directory. Ви не хочете, щоб отримати його окремо, Facebook SDK v5 міститься в нашому source code.

    Facebook API Configuration (fbConfig.php)

    FileConfig.php використовується для налаштування Facebook SDK і підключення до Facebook Graph API. Specify вашого Facebook App ID ($appId), App Secret ($appSecret), Callback URL ($redirectURL), і Permissions ($fbPermissions) для з'єднання з Facebook API and working with SDK.

    Зверніть увагу, що: Access token must have publish_actions permission to post on Facebook wall.

    if(! session_id())(
    session_start();
    } // Include the autoloader, створений в SDK
    require_once __DIR__ . "/facebook-php-sdk/autoload.php";// Include required libraries
    use Facebook \ Facebook;
    use Facebook \ Exceptions \ FacebookResponseException;
    use Facebook \ Exceptions \ FacebookSDKException ; /*
    * Configuration and setup Facebook SDK
    */
    $appId = "InsertAppID" ; //Facebook App ID
    $appSecret = "InsertAppSecret" ; // Facebook App Secret
    $redirectURL = "http://localhost/post_to_facebook_from_website/"; //Callback URL
    $fbPermissions = array("publish_actions"); //Facebook permission$fb = новий Facebook (array(
    "app_id" => $appId ,
    "app_secret" => $appSecret ,
    "default_graph_version" => "v2.6" ,
    ));// Get redirect login helper
    $helper = $fb -> getRedirectLoginHelper ();// Try to get access token
    try (
    $accessToken = $_SESSION ["facebook_access_token"];
    )else(
    $accessToken = $helper -> getAccessToken();
    }
    ) catch(FacebookResponseException $e ) (
    echo "Graph returned an error: " . $e -> getMessage();
    exit;
    ) catch(FacebookSDKException $e ) (
    echo. $e -> getMessage();
    exit;
    }
    ?>

    Зверніть увагу, що ви використовуєте потрібні ідентифікатори і клацніть.

    Submit Post до Facebook Wall (index.php)

    Include the fbConfig.php файл для підключення до Facebook API і отримати доступ до token.

    Якщо FB access token ($accessToken) є available, the following will happen.

    Якщо FB access token ($accessToken) не є можливим, на Facebook Login URL буде створено і користувачі буде перенаправлено на FB login page.

    // Include FB configuration file
    require_once "fbConfig.php" ;$accessToken ))(
    if(isset($_SESSION ["facebook_access_token" ]))(
    $fb ->
    )else(
    // Put short-lived access token in session
    $_SESSION ["facebook_access_token"] = (string) $accessToken ; // OAuth 2.0 client handler helps to manage access tokens
    $oAuth2Client = $fb -> getOAuth2Client(); // Exchanges a short-lived access token for a long-lived one
    $longLivedAccessToken = $oAuth2Client -> getLongLivedAccessToken ($_SESSION ["facebook_access_token"]);
    $_SESSION [ "facebook_access_token" ] = (string) $longLivedAccessToken ; // Set default access token to be used in script
    $fb -> setDefaultAccessToken ($_SESSION ["facebook_access_token"]);
    )//FB post content
    $message = "Test message from сайт website";
    $title = "(!LANG:Post From Website" ;!}
    $link = "http://www.сайт/";
    $description = "CodexWorld is a programming blog.";
    $picture = "http://www..png" ;$attachment = array(
    "message" => $message ,
    "name" => $title ,
    "link" => $link ,
    "description" => $description ,
    "picture" => $picture ,
    );// Post to Facebook
    $fb -> post ("/me/feed", $attachment, $accessToken); // Display post submission status
    echo "The post was published successfully до Facebook timeline.";
    )catch(FacebookResponseException $e )(
    echo "Graph returned an error: " . $e -> getMessage();
    exit;
    )catch(FacebookSDKException $e )(
    echo "Facebook SDK відновлений an error: ". $e -> getMessage ();
    exit;
    }
    )else(
    // Get Facebook login URL
    $fbLoginURL = $helper -> getLoginUrl ($redirectURL , $fbPermissions );

    // Redirect to Facebook login page
    echo """> " ;
    }

    Conclusion

    We’ve tried to provide a simple way to share the post to Facebook wall from website using PHP. Hope! наш script буде help you to post на Facebook wall з вашого веб-сайту. Also, ви можете змінити повідомлення content динамічно specifying the respective value в $attachment array.

    Чи є ви, щоб отримати implementation help, або modify або extend the functionality of this script?

    Абсолютно використати SDK. Перевага в тому, що це бібліотека, яка протестована та використовується у дикій природі. Ніколи не перебудовуйте колесо, коли вам це не потрібно (ви виявите, що ви зробите більше);).

    Те, що я в кінцевому підсумку робить в CI був додати Facebook PHP SDK в мій каталог бібліотеки і змінити __construct функцію Facebook класу бути:

    Public function __construct() ( $ci =& get_instance(); $this->setAppId($ci->config->item("fb_appId")); $this->setApiSecret($ci->config->item( "fb_secret")); $this->setCookieSupport($ci->config->item("fb_cookie")); $this->setBaseDomain($ci->config->item("fb_domain")); $this ->setFileUploadSupport($ci->config->item("fb_upload")); )

    Як тільки це було зроблено, я зміг отримати доступ до FB API з будь-якого місця у своїй програмі через $this->facebook.

    Сказавши все це, все це було до 2.0, тому я не зовсім впевнений у тому, які зміни будуть у разі потреби (я використовую Yii зараз, і саме тому я не знаю обов'язковий:)).

    Сподіваюся, це допоможе.

    Відповідно до прохання, я в кінцевому підсумку додавши UserModel клас (розширення Model). У мене є підтримка для декількох користувачів, тому я не публікуватиму все це. Але це суть його:

    Class UserModel extends Model ( private $m_user; public function UserModel() ( parent::Model(); $this->m_user = null; $session = $this->facebook->getSession(); if($session) ( if($this->facebook->api("/me") != null) ( $this->m_user = $this->facebook->api("/me"); ) ) ) public function getUser() ( return $this->m_user; ) public function isLoggedIn() ( return $this->getUser() != null; ) // returns either the login або logout url for the given provider, relative to the // state that the current user object is in public function getActionUrl() ( if($this->isLoggedIn()) ( return $this->facebook->getLogouturl(); ) else ( return $this->facebook->getLoginUrl(array(" next"=>currentUrl(), "cancel"=>currentUrl(), "req_perms"=>null, "display"=>"popup")); ) ) )

    isLoggedIn()): ?> Logout

    Друге редагування:

    На жаль, це було в той час, як я написав це, тому мені довелося повернутися і з'ясувати, як це реалізовано: P Після швидкого grep я виявив, що я не використовую getActionUrl в будь-якому місці. Я додав кілька сценаріїв для прослуховування подій входу/виходу до FB:

    Google.setOnLoadCallback(on_load); google.load("jquery", "1.4.4"); window.fbAsyncInit = function() ( FB.init((appId: "", status: true, cookie: true, xfbml: true)); FB.Event.subscribe("auth.login", on_fb_login); FB.Event .subscribe("auth.logout", on_fb_logout); ); function on_load() ( // force all anchors with rel tag "ext" to open in an external window // (replaces target= functionality) $("a").click(function()( window.open(this)). href);return false; ));) function on_fb_login() ( location.reload(); )