[英]facebook login Server-side Apps with javascript sdk
我已經在stackoverflow上搜索了完整的示例或某個博客,該博客解釋了如何使Facebook使用javascript sdk登錄到服務器端應用程序,但未找到任何內容。
我搜索了developer.facebook.com網站,唯一得到的是一個PHP示例https://developers.facebook.com/docs/howtos/login/server-side-login/ 。 問題是我必須使用JavaScript。
我為什么要這樣做? 原因是我想將文件上傳到服務器(google-app-engine(Java Sdk)),並使用facebook用戶ID將其保存在數據庫中,並通過其用戶ID進行檢索。
另一個問題是,如果他動態上傳我的JavaScript代碼,我該如何調試?代碼幫助又如何?
好吧,我可以為您解決這個問題。 如果需要使用FB的JS SDK,則必須在客戶端或瀏覽器上進行所有操作,因為Facebook在服務器端不支持Java。
因此,我建議您可以在客戶端上對用戶進行身份驗證,定義訪問用戶配置文件的范圍,一旦由用戶進行身份驗證,您將獲得響應作為JSON對象,可以使用ajax將其發送到AppEngine后端。
我正在共享我使用FB登錄的鏈接,並訪問用戶的個人資料信息以及他在相冊和視頻中的照片。
http://demositeunicfyp.appspot.com/fb-pictures.html
http://demositeunicfyp.appspot.com/facebook.html
您可以在瀏覽器中調試JS代碼,以查看從Facebook API獲得的響應對象類型。
$(document).ready(function() {
// Initializing the Facebook SDK
FB.init({
appId : 'XXXXXXXXXXXXXXXX',
status : true,
cookie : true,
xfbml : true,
oauth : true
});
// Method to check if a user is looged in to FB or Not
FB.getLoginStatus(updateButton);
$("#logout").live("click", function(event) {
event.preventDefault();
// FB.getLoginStatus(updateButton);
FB.logout(function(response) {
$("#loginDiv").show();
$("#logoutDiv").hide();
});
});
$("#fbLoginButton").live("click", function(event) {
//event.preventDefault();
FB.getLoginStatus(updateButton);
});
function updateButton(response) {
var button = document.getElementById("fbLoginButton");
if (response.authResponse) {
// user is already logged in and connected
// button.innerHTML = 'Facebook Logout';
//$("#loginDiv").hide();
//$("#logoutDiv").show();
//window.location = '/confirm';
FB.api('/me', function(response) {
$("#userName").text(response.name);
$("#userEmail").text(response.email);
});
} else {
// user is not connected to your app or logged out
// button.innerHTML = 'Facebook Login';
button.onclick = function() {
FB.login(function(response) {
if (response.authResponse) {
// button.innerHTML = 'Facebook Logout';
$("#loginDiv").hide();
$("#logoutDiv").show();
FB.api('/me', function(response) {
$("#userName").text(response.name);
$("#userEmail").text(response.email);
});
} else {
//user cancelled login or did not grant authorization hence do nothing
}
}, {
scope : 'email,publish_actions'
});
}
}
}
});
取自SDK下載中的JS.php
<?php
require '../folderTo/facebook.php';
$facebook = new Facebook(array(
'appId' => '',
'secret' => '',
));
// See if there is a user from a cookie
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('me?fields=photos'); } catch (FacebookApiException $e) {
echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
$user = null;
}
}
?>
<!DOCTYPE html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<body>
<?php if ($user) { ?>
Your user profile is
<pre>
<?php print htmlspecialchars(print_r($user_profile, true)) ?>
</pre>
<?php } else { ?>
<fb:login-button></fb:login-button>
<?php } ?>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId: '<?php echo $facebook->getAppID() ?>',
cookie: true,
xfbml: true,
oauth: true
});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
FB.Event.subscribe('auth.logout', function(response) {
window.location.reload();
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
</body>
</html>
這里的工作示例: http : //slicethegreen.com/examples/js.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.