2011-04-18 10 views
0

나는 다음과 같은 코드로 실버 라이트 응용 프로그램 내에서 페이스 북의 C#을 SDK를 사용하여 페이스 북에서 앨범 사진을 얻을 트링 해요 : this.ID가의 ID입니다페이스 북 앨범 사진 사용하여 페이스 북 C#을 SDK

 FacebookClient client = new FacebookClient(this.Profile.AccessToken); 
     client.GetAsync(string.Format("/{0}/picture?type=small", this.ID)); 
     client.GetCompleted += (s, e) => 
     { 
      dynamic result = e; 
     }; 

앨범,하지만이 오류 : 값을 구문 분석하는 동안 예기치 않은 문자가 발생했습니다 : . JsonSerializer의 DeserializeObject 메소드의 행 1, 위치 1. 문제는 페이스 북에서 imge uri 또는 이와 유사한 것으로 json 데이터를 반환하지 않지만 실제로 이미지 자체를 이진 데이터로 반환한다는 것입니다. 아무도 내가이 결과를 어떻게 처리 할 수 ​​있을지 또는 이미지에 Uri를 가져올 수 있는지 전혀 알지 못합니까? 나는 문제는이 코드를 사용하여에 대한 해결 방법이 있습니다

 var request = WebRequest.Create(string.Format("https://graph.facebook.com/{0}/picture?access_token={1}", this.ID, this.Profile.AccessToken)); 
     request.BeginGetResponse(ar => 
     { 
      using (var response = ((WebRequest)ar.AsyncState).EndGetResponse(ar)) 
      { 
       Deployment.Current.Dispatcher.BeginInvoke(() => 
       { 
        this.Picture = new BitmapImage(new Uri(response.ResponseUri.AbsoluteUri)); 
       } 
       ); 
      } 
     }, request); 

을하지만 난 정말 데이터를 가져 오는 경우에만 페이스 북 C#을 SDK를 사용하고 싶었다.

 FacebookClient client = new FacebookClient(this.Profile.AccessToken); 
     client.QueryAsync(String.Format("SELECT src_small, src_big, src FROM photo WHERE pid IN (SELECT cover_pid FROM album WHERE object_id={0})", this.ID)); 
     client.GetCompleted += (s, e) => 
     { 
      dynamic result = e.GetResultData(); 

      Deployment.Current.Dispatcher.BeginInvoke(() => this.Picture = result[0].src_small); 
     }; 
+0

페이스 북 문서화을 받고 이런 식으로 '앨범'노드의하여 '사진'연결이 URL로 _An의 HTTP 302을 반환 말한다 : 이처럼 해결 이상하게 들리는데, 나는 이것을 처리 할 수있는 적절한 방법이 무엇인지 궁금합니다. –

+0

제 문제에 대한 해결책을 찾았습니다. 그래프 API 대신 FQL을 사용합니다. 그러면 다음과 같은 작업이 수행됩니다. 'FacebookClient client = new FacebookClient (this.Profile.AccessToken); client.QueryAsync (String.Format ("SELECT src_small, src_big, src FROM 사진에서 pid IN (앨범 cover_pid에서 앨범 WHERE object_id = {0})", this.ID))); client.GetCompleted + = (s, e) => {동적 결과 = e.GetResultData(); Deployment.Current.Dispatcher.BeginInvoke (() => this.Picture = result [0] .src_small); }; ' –

+0

정말 해결책을 찾아내어 (자신의) 질문에 대한 답변으로 게시하고 정답으로 표시해야합니다. 그렇게하면 훨씬 더 명확해질 것입니다. –

답변

0

나는 내 문제에 대한 수용 가능한 해결책을 찾은 것 같아요 : 여기

내가 사용하는거야 솔루션입니다. 그래프 API 대신 FQL을 사용합니다. 그러면 다음과 같은 작업이 수행됩니다.

 FacebookClient client = new FacebookClient(this.Profile.AccessToken); 
     client.QueryAsync(String.Format("SELECT src_small, src_big, src FROM photo WHERE pid IN (SELECT cover_pid FROM album WHERE object_id={0})", this.ID)); 
     client.GetCompleted += (s, e) => 
     { 
      dynamic result = e.GetResultData(); 

      Deployment.Current.Dispatcher.BeginInvoke(() => this.Picture = result[0].src_small); 
     }; 
1

나는 비슷한 문제에 직면하고있었습니다. Facebook C# SDK도 사용하고 싶었습니다.

FacebookClient facebookAlbumClient = new FacebookClient(_albumAccessToken); 
dynamic facebookAlbumCover = facebookAlbumClient.Get(string.Format("/{0}?fields=picture&type=thumbnail", (string)facebookAlbum["id"])); 

당신은 JSON 배열이 아닌 그림