# Social(Facebook, Oauth 컴포넌트 사용시 활용)
facebook.appId =
facebook.appSecret =
=== Facebook JavaScript SDK 로드 ===
별도의 설치 없이 CDN에서 동적으로 로드됩니다.\\
더 자세한 방법은 공식 QuickStart를 참고하세요. [[https://developers.facebook.com/docs/javascript/quickstart
|Meta for Developers - JavaScript SDK Quickstart]]
=== Facebook JavaScript SDK 초기화 (FB.init) ===
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR_APP_ID', // ← 필수: Meta 개발자 콘솔에서 발급받은 앱 ID
autoLogAppEvents : true, // 자동으로 앱 이벤트(페이지뷰 등) 로깅 (권장)
xfbml : true, // 페이지에 삽입된 XFBML 태그(예: Like 버튼)를 자동 파싱
version : 'v20.0' // ← 필수: 사용하는 Graph API 버전 (최신 버전 권장)
});
// 초기화 완료 후 실행할 코드 (선택)
FB.getLoginStatus(function(response) {
// 로그인 상태 체크 로직
});
};
Facebook SDK를 사용하기 위해서는 **페이지 로드 시 가장 먼저 FB.init()을 호출**해야 합니다.\\
이 함수는 앱 ID와 SDK 버전 등을 설정하며, SDK가 Meta 서버와 제대로 통신할 수 있게 해줍니다.\\
이 초기화가 완료되어야 FB.login(), FB.api(), FB.ui() 등의 모든 SDK 메서드가 정상 동작합니다.\\
=== 주의사항 ===
- 서버 인증 및 사용자 세션 관리와는 무관\\
- 토큰은 클라이언트 범위에서만 사용\\
===== 관련화면 및 수행메뉴얼 =====
=== Facebook 로그인 ===
// 페이스북 (로그인)
function facebookLogin() {
// 로그인 정보 GET
FB.login(function(res) {
// 사용자 정보 GET
FB.api(
'/' + res.authResponse.userID + '/',
'GET',
{
"fields" : "id,name,email"
},
function(res2) {
accessToken = res.authResponse.accessToken // 엑세스 토큰
// res.authResponse.graphDomain : 공급자 (페이스북)
userID = res.authResponse.userID // 유저 아이디 구분 (숫자)
// res2.name : 유저 이름
// res2.email : 유저 이메일 정보
document.querySelector('#logBtn').value = "logout";
document.querySelector('#facebookLink').style.display = "block";
});
});
}
{{:egovframework:com:v2:uss:facebooksign.jpg|}}\\
로그인 : Facebook 사용을 위해 로그인을 한다.
----
=== Facebook 목록 ===
{{:egovframework:com:v3.9:uss:ion:fbk:facebooklist.jpg?800}}\\
Feed : Facebook 담벼락 목록 조회를 한다.\\
Albums : Facebook에 등록한 앨범을 조회한다.\\
Profile : Facebook에 프로필을 조회한다.\\
Sign Out : Facebook 연동정보 삭제
----
=== Facebook feed ===
FB.api(
'/me/albums',
'GET',
{"fields":"id,name"},
function(response) {
var data = response.data;
var html = "";
html += '';
html += ' ';
html += '';
for (var i = 0; i < data.length; i++) {
html += '';
html += '';
html += '' + '">';
html += '';
html += '';
html += ' ';
html += ' ';
}
html += '';
html += '
';
document.querySelector('#dv').innerHTML = html;
}, {access_token: accessToken}
);
{{:egovframework:com:v3.9:uss:ion:fbk:facebookfeed.jpg?800|}} \\
----
=== Facebook album ===
FB.api(
'/' + albumId+'?fields=photos{picture},name',
'GET',
{"fields":"photos{picture},name"},
function(response) {
var html = "";
html += 'Your Facebook Photo Album: ' + response.name + '
';
//사진이 없고 사진첩만 있으면
if(!response.hasOwnProperty('photos')) {
html += '등록된 사진이 없습니다.
'
} else {
var data = response.photos.data;
html += '';
html += ' ';
html += '';
for (var i = 0; i < data.length; i++) {
html += '';
html += '';
html += '
';
html += ' ';
html += ' '
}
};
document.querySelector('#dv').innerHTML = html;
}, {access_token: accessToken}
);
{{:egovframework:com:v3.9:uss:ion:fbk:facebookalbum.jpg?600|}} \\
----
=== Facebook profile ===
FB.api(
'/' + userID + '?fields=id,name,email,first_name',
'GET',
{"fields":"id,name,email,first_name"},
function(response) {
console.log(response)
var data = response;
var html = ""
html += 'Your Facebook Profile
';
html += '';
html += 'Hello, ' + data.first_name + '!';
html += '
';
html += '';
html += ' ';
html += '';
html += '';
html += 'Facebook ID ';
html += '' + data.id + ' ';
html += ' ';
html += '';
html += 'Name ';
html += '' + data.name + ' ';
html += ' ';
html += '';
html += 'Email ';
html += '' + data.email + ' ';
html += ' ';
html += '';
html += '
';
document.querySelector('#dv').innerHTML = html;
}, {access_token: accessToken}
);
{{:egovframework:com:v5.0:uss:ion:fbk:페이스북_프로필.png?600|}}
----
=== Facebook sign out ===
// 페이스북 (로그아웃)
function facebookLogout() {
FB.logout(function(res) {
document.querySelector('#logBtn').value = "Sign in with Facebook";
document.querySelector('#facebookLink').style.display = "none";
});
}
{{:egovframework:com:v5.0:uss:ion:fbk:페이스북_로그아웃.png|}}