Я использую twitteroauth.php для добавления функций входа на мой сайт с помощью twitter api.
Он работает нормально. Но я хочу реализовать то же самое с помощью jQuery и AJAX, чтобы страница не обновлялась при возврате.
Ниже приведен фрагмент кода
<?php require("twitter/twitteroauth.php"); require 'config/twconfig.php'; session_start(); $twitteroauth = new TwitterOAuth(YOUR_CONSUMER_KEY, YOUR_CONSUMER_SECRET); // Requesting authentication tokens, the parameter is the URL we will be redirected to $request_token = $twitteroauth->getRequestToken('http://list.2lessons.com/fbtwLogin/getTwitterData.php'); // Saving them into the session $_SESSION['oauth_token'] = $request_token['oauth_token']; $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; // If everything goes well.. if ($twitteroauth->http_code == 200) { // Let's generate the URL and redirect $url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']); header('Location: ' . $url); } else { // It's a bad idea to kill the script, but we've got to know when there's an error. die('Something wrong happened.'); } ?>
Я искал что-то похожее на Facebook JS SDK для входа в Twitter. Facebook JS SDK не обновляет страницу при входе в систему. Я сделал свой собственный, используя всплывающее окно JS. На самом деле он не использует AJAX.
а. Для запуска всплывающего окна вам нужна ссылка:
<a href = "#" onclick = "window.open ('http://localhost.com/twitter_login.php', 'Twitter', 'width = 640, height = 480');"> Войти в Twitter </ а>
б. PHP-скрипт для входа в Twitter (код, который вы отправили выше) и обратный вызов (где пользователь приземляется после входа в систему).
Обратный вызов должен выглядеть так:
<?php // In php part you should store information about login (AccessToken, User info, and anything else you want) into DB ?> <html> <head><title></title></head> <body> <!-- In html part I let user know that he/she has been logged in. In my case, Twitter icons --> <script type="text/javascript"> if(window.opener && !window.opener.closed) { window.opener.refreshTwitterIcons(); // function is called in parent window from which user has triggered the popup } window.close(); // Closing the popup </script> </body> </html>
Это довольно просто, используя функцию $ .ajax () jQuery , где вы в основном размещаете свои данные в своем PHP-коде.
Единственное, что нужно изменить, это раздел заголовка – вы можете захотеть вернуть JSON-кодированное сообщение – например, «ОК» или «Сообщение об ошибке», чтобы вы могли отреагировать на это.
$.ajax({ url: "your_file.php", type: 'post', dataType: 'json', success: function(data, status, xhr) { if (data.msg == 'OK') { // all ok, user logged in } else { // display error console.log(data.msg); } } });
И часть PHP:
<?php require("twitter/twitteroauth.php"); require 'config/twconfig.php'; session_start(); $twitteroauth = new TwitterOAuth(YOUR_CONSUMER_KEY, YOUR_CONSUMER_SECRET); // Requesting authentication tokens, the parameter is the URL we will be redirected to $request_token = $twitteroauth->getRequestToken('http://list.2lessons.com/fbtwLogin/getTwitterData.php'); // Saving them into the session $_SESSION['oauth_token'] = $request_token['oauth_token']; $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; // If everything goes well.. if ($twitteroauth->http_code == 200) { // Let's generate the URL and redirect $url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']); echo json_encod(array('msg' => 'OK')); } else { // It's a bad idea to kill the script, but we've got to know when there's an error. echo json_encod(array('msg' => 'Something wrong happened.')); } ?>