2012-06-27 4 views
0

제목에서 짐작 했겠지만 OmniAuth를 사용하여 사용자의 현재 Facebook 상태 (새로운 옵트 인 기능)를 얻으려고합니다. omniauth initializer 안에 필요한 scope 옵션을 provider 메소드에 전달했습니다. 나는 그것이 한 입 가득, 미안하다는 것을 압니다. 이 코드는 도움이 다음의 OAuth 대화하는 동안, 페이스 북은 자신의 상태 메시지에 대한 액세스를 허용하라는 메시지를 표시하기 때문에OmniAuth & Rails로 사용자의 현재 Facebook 상태 가져 오기

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, ENV['FACEBOOK_ID'], ENV['FACEBOOK_SECRET'], { scope: 'user_status' } 
end 

나는 그 부분의 일을 알고있다. 그래서 문제는 인증 상태가 Auth Hash에 반환 될 것이라고 기대하고 나머지 사용자 정보와 함께 있지만 문제가 아닙니다.

def callback 
    raise request.env['omniauth.auth'].to_yaml 
end 

은 예,이 과도하게 단순화,하지만 난 당신이 지금 약 2 시간 동안 주위 봤 한

등 내 before_filters에 대한 상관 없어 파악하고, 내가 찾은 모든 예제는 정말 고안했다 . 범위를 다루는 항목은 권한을 요청하는 방법 만 언급했지만 실제로 데이터를 가져 오는 방법은 언급하지 않았습니다.

여기에 a similar unanswered question이 있었지만 너무 오래 되었기 때문에 그것을 부활시키는 것이 좋지 않다고 생각했습니다.

어떤 도움을 주셔서 감사합니다. 감사!


7 월 3 업데이트 : 당신의 도움에 대한

감사합니다! 나는 당신의 조언을 찍은과 같이 사용자의 현재 상태를 요청하기 위해 인증 해시에서 토큰을 사용했습니다 : 미래의 독자

FbGraph::User.me(@auth[:credentials][:token]).posts.first.message 

: 그것은 토큰이 약 2 개월의 시간이 만료 점에 유의하는 것이 중요합니다, 사용자가 암호를 변경할 때마다 은 토큰이 만료 될 때 사용자에게 알리고 자합니다. FB 문서에서 수집 할 수있는 것부터 만료일은 Unix Timestamp 형태로 표현됩니다. 당신은 너무 같은 루비 날짜 시간을 좋아하는 것이 더 유용 뭔가 그 변환 할 수 있습니다 :

expires_at = Time.at(@auth[:credentials][:expires_at]).to_datetime 

을 그런 다음 모델에 토큰을 저장하고 과거를 호출 할 수 있습니다?에 앱이 유효하지 않은 토큰을 사용하지 않도록하십시오.

do_something unless expires_at.past? 
+0

안녕하세요. 동일한 문제가 있습니다. fbk 권한 참조 http://developers.facebook.com/docs/authentication/permissions/ (user_status 아래)를 통해 가려고. 운이 아직 없다! – Hishalv

답변

2

아는대로 상태 (stati)는 인증 해시의 일부로 반환되지 않습니다. 토큰을 가지고 나면 이걸 요청해야합니다. 예를 들어 은 (코알라 보석을 사용하여) :

http://developers.facebook.com/tools/explorer/?method=GET&path=me%2Fstatuses

+0

트위터가 자신의 정식 해쉬에 넣기 때문에 내가 거기에있을 것으로 예상했다. 쉽게 얻을 수있는 것은 아니지만 raw_data 아래에 있으며 JSON으로 파싱 할 수 있습니다. –

2

당신이 user_status 권한을 설정 (사용자가이를 승인), 페이스 북 부여 :

api = Koala::Facebook::API.new(auth.credentials.token) 
api.get_connections('me', 'statuses').first 

당신은 그래프 탐색기를 사용하여 확인할 수 있습니다 해당 사용자의 상태 메시지를 읽는 응용 프로그램 액세스 인증 프로세스에서 사용자 상태 메시지가 반환되지 않으므로 별도의 호출을 실행하여 사용자의 상태 업데이트를 검색해야합니다.

앱에 권한이 부여 된 후 fb_graph과 같은 보석을 사용하여 이후 Facebook에 요청할 수 있습니다. 당신이 koalaoauth2 것이다 활용할 수

user = FbGraph::User.new('me', :access_token => session[:omniauth]["credentials"]["token"]) 
user.fetch 

다른 보석 : 여기 OmniAuth 이것을 통합하는 방법은 다음과. Here's an example with oauth2 with Facebook 사용.

관련 문제