-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
135 lines (116 loc) · 3.69 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
window.fbAsyncInit = function () {
FB.init({
appId: '404888344473042',
cookie: true,
xfbml: true,
version: 'v12.0',
});
FB.AppEvents.logPageView();
FB.getLoginStatus(function (response) {
statusChangeCallback(response);
});
};
(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/en_US/sdk.js';
fjs.parentNode.insertBefore(js, fjs);
})(document, 'script', 'facebook-jssdk');
function statusChangeCallback(response) {
if (response.status === 'connected') {
setElements(true);
// console.log('Logged in and authenticated');
testAPI();
} else {
setElements(false);
// console.log('Not authenticated');
// console.log(response);
}
}
function checkLoginState() {
FB.getLoginStatus(function (response) {
statusChangeCallback(response);
});
}
function testAPI() {
FB.api('/me?fields=name,email,birthday', function (response) {
if (response && !response.error) {
buildProfile(response);
}
FB.api('/me/posts', function (response) {
if (response && !response.error) {
buildPosts(response);
} else {
handleLimitedData();
}
});
});
}
function buildProfile(user) {
const profileContent = document.querySelector('.profile-content');
const name = document.createElement('h3');
const profileAttributes = document.createElement('ul');
const userID = document.createElement('li');
const email = document.createElement('li');
const birthday = document.createElement('li');
name.textContent = user.name;
userID.textContent = `User ID: ${user.id}`;
email.textContent = `Email: ${user.email}`;
birthday.textContent = `Birthday: ${user.birthday}`;
profileAttributes.setAttribute('class', 'attr-list');
name.setAttribute('class', 'profile-name');
userID.setAttribute('class', 'attr');
email.setAttribute('class', 'attr');
birthday.setAttribute('class', 'attr');
profileContent.appendChild(name);
profileAttributes.appendChild(userID);
profileAttributes.appendChild(email);
profileAttributes.appendChild(birthday);
profileContent.appendChild(profileAttributes);
console.log(profileContent);
}
function buildPosts(posts) {
let output = '<h3>Latest Personal Posts</h3>';
for (let i in posts.data) {
if (posts.data[i].message) {
output += `
<div class="post">
${posts.data[i].message} <span>${posts.data[i].created_time}</span>
</div>
`;
}
}
document.querySelector('.posts').innerHTML = output;
}
function setElements(isLoggedIn) {
if (isLoggedIn) {
document.querySelector('.profile').style.display = 'block';
document.querySelector('.fb-btn').style.display = 'none';
document.querySelector('.logout').style.display = 'block';
document.querySelector('.posts').style.display = 'block';
document.querySelector('.pre-login-content').style.display = 'none';
} else {
document.querySelector('.profile').style.display = 'none';
document.querySelector('.fb-btn').style.display = 'block';
document.querySelector('.logout').style.display = 'none';
document.querySelector('.posts').style.display = 'none';
document.querySelector('.pre-login-content').style.display = 'block';
}
}
function handleLimitedData() {
const output =
"Sorry! Facebook won't let me access your posts because I'm not a verified business.";
document.querySelector('.posts').innerHTML = output;
}
// Run automatically because I need verified account status first to get users' non-public data
handleLimitedData();
function logout() {
FB.logout(function (response) {
setElements(false);
});
}