어이쿠 완전 삽질 많이 했다….
첨에는 몰라서 샘플이 있는 오래된 rest api로 하였다… 하지만 역시 오래된거라서 그런지 안되는것도 많았다.. 특히 리스트 받아오는 부분.;;
이번에는 Graph API를 이용해서 facebook 정보를 얻고 feed를 던져보자~
일단 여기 Facebook API 공식 페이지를 참고하였다…
http://developers.facebook.com/docs/api#publishing
근데 iphone이나 안드로이드 폰이나 머 다 sdk가 있지만 여긴 없어서 노가다 작업을 할수 밖에 없다…ㅠㅠ
일단 제일 중요한… 인증부분 이것만 끝나면 거의 다 끝났다고 보면 된다.
일단 메소드를 사용 하기 위해서는 Access_token이 필요한데 또 이것을 얻기 위해서는 나름 험난한 여정(?)을 격어야 한다…
Access_token을 얻기위해 파라미터로는 api key(client_id), redirect_url, code 가 필요한데 여기서 또 code를 얻기위해서 페이지를 한번 이동시켜야 한다.
그렇기 때문에 webBrower control이 필요하다…
일단 code를 얻기 위한 url을 보자…
https://graph.facebook.com/oauth/authorize?client_id={Api Key}&redirect_uri=http://www.facebook.com/connect/login_success.html
api key는 facebook 어플에서 얻을수 있고 리다이렉션 url은 가장 유명하고 굴러다니는것을 썻다..내껀 웹이 아니기떄문에 (나름 웹 어플^^)
여기에 접속을 하게 되면 http://www.facebook.com/connect/login_success.html?code=블라블라블라~
라고 url로 준다.. 그러면 저것을 얻어서 이제 본격적으로 AccessToken을 얻자~
이러면 Json으로 Access_Token을 리턴해준다.
이걸로 멀할수 있느냐?
Friends: https://graph.facebook.com/me/friends
News feed: https://graph.facebook.com/me/home
Profile feed (Wall): https://graph.facebook.com/me/feed
Likes: https://graph.facebook.com/me/likes
Movies: https://graph.facebook.com/me/movies
Books: https://graph.facebook.com/me/books
Notes: https://graph.facebook.com/me/notes
Photo Tags: https://graph.facebook.com/me/photos
Photo Albums: https://graph.facebook.com/me/albums
Videos: https://graph.facebook.com/me/videos
Events: https://graph.facebook.com/me/events
Groups: https://graph.facebook.com/me/groups
다양하다… ;;
예를들면
나의 news Feed를 받고 싶으면
https://graph.facebook.com/me/home?access_token={아까받은거}
넣으면 되는것이다..
혹시 저 url에 뒤에 일일히 token값을 넣기 귀찮다면 meta data를 이용하면 편하다.
https://graph.facebook.com/me?metadata=1
그리고 포스트 글을 쓸떼는
https://graph.facebook.com/me/feed?access_token?message=Helloworld(난 프로그래머니깐)
근데 중요한건 꼭 post방식으로 보내야 한다..Get은 안된다~
그리고 xml로는 안보내준다는거…
wp7에서는 이렇게 구현했다..
쓰는부분
public void WriteFeed(string accessToken, Action<string, Exception> callback)
{
string value = string.Empty;
WebClient webClient = new WebClient();
webClient.Headers["Content-Type"] = "";
//var tokenUrl = new Uri(GetTokenUrl(code), UriKind.Absolute); //url도 나중에 파라미터로 넣으면 좋을듯
var url = GetWrtieFeedUrl(accessToken, "I am posting to my own feed");
webClient.UploadStringAsync(new Uri(url),"POST",string.Empty);
webClient.UploadStringCompleted += (s, e) =>
{
if (e.Error == null)
{
value = e.Result;
}
callback(value, null);
};
}
public string GetWrtieFeedUrl(string token,string message)
{
var url= string.Format("https://graph.facebook.com/me/feed?access_token={0}&message={1}",token,HttpUtility.UrlEncode(message));
return url;
}
인증부분
public void GetFacebookToken(string code, Action<string, Exception> callback)
{
string value = string.Empty;
WebClient webClient = new WebClient();
var tokenUrl = new Uri(GetTokenUrl(code), UriKind.Absolute); //url도 나중에 파라미터로 넣으면 좋을듯
webClient.DownloadStringAsync(tokenUrl);
webClient.DownloadStringCompleted += (s, e) =>
{
if (e.Error == null)
{
value = e.Result;
}
callback(value, null);
};
}
public string GetTokenUrl(string code)
{
return string.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&client_secret={2}&code={3}",FacebookConfigrationManager.GetData("clientId"),FacebookConfigrationManager.GetData("redirectUrl"),FacebookConfigrationManager.GetData("clientSecret") ,code);
}
나중에 소스 첨부해야겠다~ 손이 피곤 ㅠㅠ
'Windows Phone 7' 카테고리의 다른 글
[wp7] Application Bar를 사용해보자. (0) | 2010.06.14 |
---|---|
[wp7] Camel Case? Pascal Case? 네이밍 규칙? (0) | 2010.06.14 |
[wp7] Event Handler러 대신 Callback 이용하여 return 하기 (0) | 2010.06.09 |
[wp7] Event Handler 에서 받은값 return 하기~ (0) | 2010.06.09 |
[wp7] compact .net framework 에서는 SortDictionary를 사용할수 없다? (0) | 2010.06.08 |