You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

236 lines
10 KiB

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta cors />
</head>
<body>
<script src="https://code.jquery.com/jquery-3.5.1.js"
integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
<div>
Facebook登入並取得用戶姓名、email:<input type="button" value="Facebook登入" onclick="FBLogin();" />
</div>
<div>
<!--留意用戶的此頁,你的App會被移除:https://www.facebook.com/settings?tab=applications-->
用戶刪除授權的App(撤銷登入):<input type="button" value="Disconnect App" onclick="Del_FB_App()" />
</div>
<!--顯示用戶的姓名、email↓-->
<div id="content"></div>
<div class="fb-send-to-messenger" messenger_app_id="652292875353442" page_id="108355484239143"
data-ref="GG147118518581" color="blue" size="xlarge">
</div>
<div>---------------------------------------------------------------</div>
<div>PO文:
<input type="text" id="postMsg" value="測試用商品" />
<input type="button" value="發文" onclick="newPost();" />
<input type="button" value="清除"" onclick=" clear('postResult')" />
<div id="postResult"></div>
</div>
<div>---------------------------------------------------------------</div>
<div>抓指定PO文,已授權使用者名稱:
<input type="text" id="postID" value="202061134174478_206152100432048" />
<input type="button" value="取得" onclick="getPost();" />
<input type="button" value="清除"" onclick=" clear('getCommentResult')" />
<div id="getCommentResult"></div>
</div>
<div>---------------------------------------------------------------</div>
<div>發訊息給使用者:
<input type="text" id="userName" value="Yh Liu" />
<input type="text" id="toUserMsg" value="to User Msg" />
<input type="button" value="告訴他" onclick="pmToUser();" />
<input type="button" value="清除"" onclick=" clear('msgResult')" />
<div id="msgResult"></div>
</div>
</div>
<script type="text/javascript">
//應用程式編號,進入 https://developers.facebook.com/apps/ 即可看到
let FB_appID = "652292875353442";
// Load the Facebook Javascript SDK asynchronously
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "https://connect.facebook.net/es_LA/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
window.fbAsyncInit = function () {
FB.init({
appId: FB_appID,//FB appID
cookie: true, // enable cookies to allow the server to access the session
xfbml: true, // parse social plugins on this page
version: 'v7.0' // use graph api version
});
FB.AppEvents.logPageView();
};
// Messenger-SDK
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) { return; }
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/messenger.Extensions.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'Messenger'));
window.extAsyncInit = function () {
// the Messenger Extensions JS SDK is done loading
};
//使用自己客製化的按鈕來登入
function FBLogin() {
FB.getLoginStatus(function (res) {
console.log(`status:${res.status}`);//Debug
if (res.status === "connected") {
let userID = res["authResponse"]["userID"];
console.log("用戶已授權您的App,用戶須先revoke撤除App後才能再重新授權你的App");
console.log(`已授權App登入FB 的 userID:${userID}`);
GetProfile();
} else if (res.status === 'not_authorized' || res.status === "unknown") {
//App未授權或用戶登出FB網站才讓用戶執行登入動作
FB.login(function (response) {
//console.log(response); //debug用
if (response.status === 'connected') {
//user已登入FB
//抓userID
let userID = response["authResponse"]["userID"];
console.log(`已授權App登入FB 的 userID:${userID}`);
GetProfile();
} else {
// user FB取消授權
alert("Facebook帳號無法登入");
}
//"public_profile"可省略,仍然可以取得name、userID
}, { scope: 'email,pages_messaging,publish_to_groups,groups_access_member_info,public_profile' });
}
});
}
</script>
<script type="text/javascript">
const hostRoot = 'https://192.168.1.107:3002/'; // const hostRoot = 'http://localhost:3000/';
const APIURL = 'https://graph.facebook.com/v3.2/';
//取得用戶姓名、email
function GetProfile() {
document.getElementById('content').innerHTML = "";//先清空顯示結果
//FB.api()使用說明:https://developers.facebook.com/docs/javascript/reference/FB.api
//取得用戶個資
FB.api("/me", "GET", { fields: 'last_name,first_name,name,email' }, function (user) {
//user物件的欄位:https://developers.facebook.com/docs/graph-api/reference/user
if (user.error) {
console.log(response);
} else {
document.getElementById('content').innerHTML = JSON.stringify(user);
}
});
}
function newPost() {
var msg = $('#postMsg').val();
$.get(hostRoot + 'Groups?hub.verify_token=LG8YBDVaU0Wg47n7VUns66666g&hub.mode=subscribe&message=' + msg,
function (result) {
let msgEle = document.createElement('a');
msgEle.innerText = "成功:" + result.id;
msgEle.target = "_blank";
msgEle.href = 'https://www.facebook.com/' + result.id;
$("#postResult").append(msgEle);
$("#getCommentResult").append(document.createElement('br'));
}).fail(function (e) {
alert("失敗");
console.log(e);
});
}
// TODO:getPost
function getPost() {
var postID = $('#postID').val();
$.ajax({
url: hostRoot + 'Groups?hub.verify_token=LG8YBDVaU0Wg47n7VUns66666g&hub.mode=subscribe&postID=' + postID,
success: function (result) {
let data = JSON.parse(result);
if (data.hasOwnProperty("comments")) {
data.comments.data.forEach(e => {
if (e.from) {
let msgEle = document.createElement('a');
msgEle.innerText = "姓名:" + e.from.name + " " + "留言:" + e.message
$("#getCommentResult").append(msgEle);
$("#getCommentResult").append(document.createElement('br'));
}
});
}
}
}).fail(function (e) {
alert("失敗");
console.log(e);
});
}
function pmToUser() {
var userName = $('#userName').val();
var toUserMsg = $('#toUserMsg').val();
$.get(hostRoot + 'webhook?hub.verify_token=LG8YBDVaU0Wg47n7VUns66666g&hub.mode=subscribe&fullname=' + userName + '&reply=' + toUserMsg,
function (result) {
if (result === 'send') {
let msgEle = document.createElement('a');
msgEle.innerText = "send成功:" + Date.now();
$("#msgResult").append(msgEle);
}
}).fail(function (e) {
alert("失敗");
console.log(e);
});
}
function clear(name) {
$('#' + name).text('');
}
</script>
<!--有些網站會做帳號和user FB帳號的綁定/解除綁定,或你想讓使用者刪除你的FB App,讓使用者下次可以切換不同FB帳號登入你的網站-->
<!--下面程式碼派得上用場-->
<script type="text/javascript">
//刪除使用者已授權你的FB App,好讓使用者下次重新授權你的FB App
//參考:https://stackoverflow.com/questions/6634212/remove-the-application-from-a-user-using-graph-api/7741978#7741978
//https://stackoverflow.com/questions/9050190/facebook-api-sdk-revoke-access
function Del_FB_App() {
FB.getLoginStatus(function (response) {//取得目前user是否登入FB網站
//debug用
console.log(response);
if (response.status === 'connected') {
//抓userID
//let userID = response["authResponse"]["userID"];
FB.api("/me/permissions", "DELETE", function (response) {
console.log("刪除結果");
console.log(response); //gives true on app delete success
//最後一個參數傳遞true避免cache
FB.getLoginStatus(function (res) { }, true);//強制刷新cache避免login status下次誤判
});
} else {
console.log("無法刪除FB App");
}
});
}
</script>
</body>
</html>