jQuery Syaku Facebook API : 자바스크립트용 페이스북 API 연동
728x90
반응형

jQuery 를 이용하여 페이스북 API 를 연동하기
우선 페이스북 API 를 사용하려면 페이스북에서 제공하는 앱을 생성해야 한다.
http://developers.facebook.com/docs/ 접속하여 앱을 생성한다.
아래의 소스는 로그인한 회원의 정보를 읽어오며, 포스트를 등록할 수 있는 기능의 소스이다.
그외 필요한 기능은 페이스북에서 제공하는 문서를 참조하면 쉽게 구현할 수 있다.
* 제가 최근 SNS 관련하여 개발을 하고 있습니다. 음... 상세한 설명까지는 힘들 것 같아요~
그래서 지우기는 아쉽고 해서 혹여나 도움이 될까하여 테스트로 만든 샘플 소스들을 마구잡이로 올려두고 있습니다.
설명이 부족하다고 해서 버럭하시지 말아주세요~
우선 페이스북 API 를 사용하려면 페이스북에서 제공하는 앱을 생성해야 한다.
http://developers.facebook.com/docs/ 접속하여 앱을 생성한다.
아래의 소스는 로그인한 회원의 정보를 읽어오며, 포스트를 등록할 수 있는 기능의 소스이다.
그외 필요한 기능은 페이스북에서 제공하는 문서를 참조하면 쉽게 구현할 수 있다.
* 제가 최근 SNS 관련하여 개발을 하고 있습니다. 음... 상세한 설명까지는 힘들 것 같아요~
그래서 지우기는 아쉽고 해서 혹여나 도움이 될까하여 테스트로 만든 샘플 소스들을 마구잡이로 올려두고 있습니다.
설명이 부족하다고 해서 버럭하시지 말아주세요~
자바스크립트 & HTML 소스
<html>
<head>
<title>jQuery Syaku Facebook API</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script src="http://connect.facebook.net/ko_KR/all.js"></script>
<script type="text/javascript">
/**
* jQuery Syaku Facebook API ver 1.0.0
*
* Copyright (c) Seok Kyun. Choi. 최석균
* GNU Lesser General Public License
* http://www.gnu.org/licenses/lgpl.html
*
* registered date 20111006
* http://syaku.tistory.com
*/
(function($) {
$.sFacebook = {
image_url : null,
photo_id : null,
me_uid : null,
me_name : null,
initialize : function(settings) {
settings = jQuery.extend(true , {
appId : '',
cookie:true,
status:true,
xfbml:true,
image_url : 'http://graph.facebook.com/{image}/picture',
me_photo_target : '#facebook-me-photo',
me_name_target : '#facebook-me-name',
facebook_close_target : '#facebook-close'
}, settings);
this.image_url = settings.image_url;
this.me_photo_target = settings.me_photo_target;
this.me_name_target = settings.me_name_target;
this.facebook_close_target = settings.facebook_close_target;
var obj = this;
jQuery('body').append("<div id='fb-root'></div>");
FB.init({
appId : settings.appId,
cookie : settings.cookie,
status : settings.status,
xfbml : settings.xfbml
});
FB.Event.subscribe('auth.login', function (response) {
// do something with response
obj.reload();
});
FB.Event.subscribe('auth.logout', function (response) {
// do something with response
obj.reload();
});
obj.reload();
},
reload : function() {
var obj = this;
this.me_profile();
FB.getLoginStatus(function (response) {
if (response.session) {
// logged in and connected user, someone you know
jQuery(obj.facebook_close_target).show();
} else {
jQuery(obj.facebook_close_target).hide();
}
});
},
me_profile : function() {
var obj = this;
FB.getLoginStatus(function (response) {
if (response.session) {
FB.api('/me', function(user) {
if(user != null) {
var image = obj.image_url.replace('{image}',user.id);
obj.me_uid = user.id;
obj.me_name = user.name;
jQuery(obj.me_photo_target).attr("src",image);
jQuery(obj.me_name_target).text(obj.me_name);
}
});
} else {
obj.me_uid = null;
obj.me_name = null;
jQuery(obj.me_photo_target).attr("src",'');
jQuery(obj.me_name_target).empty();
}
});
},
login : function() {
FB.getLoginStatus(function (response) {
if (response.session) {
obj.me_profile();
} else {
FB.login(function(response) { }, { perms:'user_website,email,offline_access,read_stream,publish_stream' });
}
});
},
logout : function() {
FB.logout(function(response) { });
},
post_feed : function(target) {
var text = jQuery(target).val();
var text_count = new String(text);
if (text_count.length == 0) { alert("내용을 입력하세요."); jQuery(target).focus(); return; }
var params = {
message : text,
link : document.URL,
name : document.title
};
FB.api('/me/feed', 'post', params, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Post ID: ' + response.id);
document.reload();
}
});
},
select_user_name : function(user_id) {
var query = FB.Data.query('select name, uid from user where uid={0}',user_id);
query.wait(function(rows) {
return rows[0].name;
});
}
};
})(jQuery);
</script>
</head>
<body>
<script type="text/javascript">
jQuery(function() {
jQuery.sFacebook.initialize({
appId : '**************' // 페이스북 App Id 입력.
});
});
</script>
<input type="text" id="facebook-post-id" />
<div><a href="javascript:jQuery.sFacebook.login();"><img src="facebook_32.png" /></a></div>
<div>
<span id="facebook-me-name"></span>
<span id="facebook-close" style="display:none;"><a href="javascript:jQuery.sFacebook.logout();">연결끊기</a></span>
</div>
<div style="padding-top:5px;">
<img src="" id="facebook-me-photo" width="50" height="50" />
<textarea cols="0" rows="0" style="height:50px;width:500px;" id="sns-post-feed" ></textarea>
<button type="button" onclick="jQuery.sFacebook.post_feed('#sns-post-feed');">글쓰기</button>
</div>
</body>
</html>

728x90
반응형
'개발노트 > jQuery' 카테고리의 다른 글
| jQuery Action (ajax 전송 컨트롤러, 유효성검사, 데이타 변경, 인터셉터 이벤트) (2) | 2013.05.25 |
|---|---|
| 소셜네트워크 글 내보내기 : SNS (0) | 2013.04.24 |
| jQuery syaku rolling slide : 자동 롤링 및 슬라드 플러그인 (8) | 2011.09.04 |
| jQuery Syaku LightBox : 이미지 라이트박스 자바스크립트 (0) | 2011.08.16 |
