Javascript 像facebook登录插件这样的插件是如何构建的?
插件如何在不暴露太多信息的情况下与facebook服务器通信 我想知道我如何能建立自己的插件,将它之间的网站和我的网站安装沟通 我的知识仅限于HTML5、CSS3、PHP5、Javascript和一些Jquery。 我意识到可能有很多方法,我只是想知道你是否能给我指出正确的方向,或者给我一个想法。(:提前谢谢Javascript 像facebook登录插件这样的插件是如何构建的?,javascript,php,facebook,html,plugins,Javascript,Php,Facebook,Html,Plugins,插件如何在不暴露太多信息的情况下与facebook服务器通信 我想知道我如何能建立自己的插件,将它之间的网站和我的网站安装沟通 我的知识仅限于HTML5、CSS3、PHP5、Javascript和一些Jquery。 我意识到可能有很多方法,我只是想知道你是否能给我指出正确的方向,或者给我一个想法。(:提前谢谢 在developers.facebook.com上创建应用程序 下载facebook SDK for PHP,因为这是您所知道的() 阅读他们关于如何实现登录的指南(这很简单,也很有帮助)
function facebook_login()
{
$user = new user();
// Call Facebook API
if (!class_exists('FacebookApiException')) {
require_once ('facebook.php');
}
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
));
$fbuser = $facebook->getUser();
if ($fbuser) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$me = $facebook->api('/me'); //user
$uid = $facebook->getUser();
}
catch(FacebookApiException $e) {
echo error_log($e);
return;
}
}
// redirect user to facebook login page if empty data or fresh login requires
if (!$fbuser) {
$loginUrl = $facebook - getLoginUrl(array(
'redirect_uri' => $_SERVER["HTTP_REFERER"],
false
));
$logout = $facebook->getLoginUrl();
echo $loginUrl;
return;
}
// user details
$user->name = $me['name'];
$user->email = $me['email'];
$user->fbid = $uid;
// Check user id in your database
$user->selectbyfbid();
if ($user->database->rows > 0) {
// User exist, Show welcome back message
// User is now connected, log him in
}
else {
// User is new, Show connected message and store info in our Database
// Insert user into Database.
$user->insert_fb();
}
$_SESSION["access_token"] = $facebook->getAccessToken();
login_user($user);
}
在HTML中:
<a href="#" onclick="LoadingAnimate();">
<div class="fb-login-button"
onlogin="javascript:CallAfterLogin();"
data-width="600" data-max-rows="1"
data-show-faces="false"
scope="publish_stream,email,publish_actions,offline_access">
JavaScript代码:
function CallAfterLogin(){
FB.login(function(response) {
if (response.status === "connected")
{
LoadingAnimate(); //show a waiting gif or whatever
FB.api('/me', function(data) {
if(data.email == null)
{
//Facbeook user email is empty, you can check something like this.
ResetAnimate();
}else{
AjaxResponse();
}
});
}
});
}
function AjaxResponse()
{
var myData = 'connect=1&action=fb_login';
jQuery.ajax({
type: "POST",
url: "/process_user.php",
dataType:"html",
data:myData,
cache: false,
success:function(response){
if(target.length > 1)
window.location.href = target;
else
location.reload();
},
error:function (xhr, ajaxOptions, thrownError){
//$("#results").html('<fieldset style="color:red;">'+thrownError+'</fieldset>'); //Error
}
});
}
函数CallAfterLogin(){
FB.login(函数(响应){
如果(response.status==“已连接”)
{
LoadingAnimate();//显示等待的gif或其他内容
FB.api('/me',函数(数据){
如果(data.email==null)
{
//Facbook用户电子邮件为空,您可以检查以下内容。
重置动画();
}否则{
AjaxResponse();
}
});
}
});
}
函数AjaxResponse()
{
var myData='connect=1&action=fb_login';
jQuery.ajax({
类型:“POST”,
url:“/process\u user.php”,
数据类型:“html”,
数据:myData,
cache:false,
成功:功能(响应){
如果(target.length>1)
window.location.href=目标;
其他的
location.reload();
},
错误:函数(xhr、ajaxOptions、thrownError){
//$(“#结果”).html(“”+thrownError+“”);//错误
}
});
}
我希望这能帮助你开始!看看,它让你很容易做到这一点,如果你有机会,请阅读,它详细解释了你想做什么
几年前,我写道,它现在和那时一样重要(尽管现在有更多的浏览器支持postMessage)。没有解决这个问题。@SeanKinsey你是100%正确的……我不知道我在想什么:D