2012-11-06 2 views
0

내 앱은 omniaauth 및 omniauth-facebook gem을 사용하여 Facebook에 연결합니다. 필요한 모든 데이터를 가져올 수 있지만 프로필 사진을 렌더링하는 데 문제가 있습니다.사용자의 프로필 사진을 저장하지 않고 표시하는 데 도움이 필요합니다.

디스크에 저장하는 대신 그림의 URL을 사용하여 사용자의 프로필 사진을 표시하려고합니다. 이뿐만 아니라

<%= image_tag "#{@user.facebook.info.image}" %> 

을 :

<img src="http://graph.facebook.com/<UID>?fields=picture" > 

을하지만 어느 쪽도 아니는 일하지 않은

나는 이것을 시도했습니다.

디스크에 저장하는 대신 URL을 사용하지 못하게하는 내용이 페이스 북 설명서에서 발견되지 않았습니다. 내가 놓친 게 있니?

+0

게시물이 잘린 것처럼 보입니다. 그렇지 않으면 불완전한 것 같습니다. – RadBrad

+0

감사합니다. 코드에 잘못된 들여 쓰기가 발생했습니다 ... –

답변

1

사용 :

<img src="http://graph.facebook.com/<UID>/picture" /> 

이 엔드 포인트는 (301)이 그림을 리디렉션 반환합니다. ?fields=을 사용하면 json 객체가 반환됩니다.

+0

링크의이 형식은 브라우저의 URL 주소 표시 줄에 수동으로 추가 할 때 작동하지만 내 응용 프로그램 내부에서는 작동하지 않습니다. –

+1

그러면 가장 잘못된 것이 있습니다. – CBroe

0

여기 해결책이 있습니다. 나는 CURB 보석을 활용해야만했다. 나는 이것을 this post을 통해 알게되었다.

궁극적으로이 방법을 응용 프로그램 도우미에 넣습니다.

def redirect_location_for(url) 
    uri_str = URI.encode(url) 

    result = Curl::Easy.http_get(uri_str) do |curl| 
    curl.follow_location = false 
    end 

    result.header_str.split('Location: ')[1].split(' ')[0] 
end 

그리고 나서 내 견해에서 이것을 가질 수있었습니다.

해결책을 통해 그래프 URL에 "http"대신 "https"를 사용해야한다는 점에 유의하십시오. 이것은 http와는 다른 URL로 리다이렉트되었고 HTTPS를 사용하여 사진을 가져 오는 경우 어떤 이유로 페이스 북은 그림을 다운로드하고 렌더링하는 방법을 제한하지 않는다. 이 방법은 너무 다른 서비스를 위해 잘 작동한다는 것입니다에 대한 좋은 데요

http://avatars.io/facebook/:id 
http://avatars.io/facebook/:username 

한 가지 :

1

다음 URL 패턴을 제공 Avatars.io 같은 서비스를 사용할 수 있습니다.

관련 문제