2011-12-08 5 views
0

내 응용 프로그램에서 사용자가 내 응용 프로그램에 확장 된 권한을 부여하고 액세스 토큰을 가져와 장기 액세스 토큰으로 저장합니다.사용자가 오프라인 일 때 사용자 친구의 벽에 게시하는 방법

이 사용자는 친구 목록이 표시되며 친구를 선택합니다.

데이터베이스에 이름과 fbuid를 저장합니다.

지금은 앞으로이 친구의 벽에 메시지를 보내려고합니다. 이것이 가능합니까? 초기 사용자가 오프라인 일 때 Facebook의 친구에게 링크를 보낼 수있는 다른 옵션이 없다면? 다음과 같이

* 업데이트 나는 오래 살았 액세스 토큰 및 오프라인 액세스이 작업을 수행 할 수 있었다 :이 최선의 방법 인 경우

access_token = "AAACvmqy1nYoBAAZCk*************dZAMjsLxKxR7DaZBE0NxY8ZBGBW1q2mzsB9TDT0RvgeQcDdnyFJNAYRf0icnhlbikZD" 
    appID  = '19307***********' 
    message  = "Happy Birthday from your friends." 
    name   = "Click here for your Birthday Surprise" 
    redirect_uri = URI.parse('http://localhost:3000/facebook/') 
    link   = "https://www.facebook.com/dialog/oauth?client_id=#{appID}&redirect_uri=#{redirect_uri}" 
    caption  = "Your friends have created a surprise for you. Click the link to see what it is." 
    picture  = 'http://www.birthdaywall.net/logo-mail.png' 
    userID  = '100002*********' 
    uri = URI.parse("https://graph.facebook.com/#{userID}/feed") 
    req = Net::HTTP::Post.new(uri.path) 
    result = req.set_form_data({:access_token => access_token , :message => message, :app_id => appID, :name => name, :link => link, :caption => caption, :picture => picture, }) 
    sock = Net::HTTP.new(uri.host, 443) 
    sock.use_ssl = true 
    sock.start do |http| 
     response = http.request(req) 
    end 

나도 몰라하지만 나를 위해 작동 그래서 나는 그것을 사용하고있다. 누구든지 더 좋은 방법이 있다면 나는 그것에 대해 매우 기쁘게 생각합니다.

답변

0

이미 publish_stream 권한이있는 것으로 생각됩니다. offline_access 액세스 토큰을 오래 사용하도록 확장 된 권한이 필요합니다.

앱이 언제든지 사용자를 대신하여 승인 된 요청을 수행 할 수있게합니다. 기본적으로 대부분의 액세스 토큰은 짧은 기간 후에 만료되어 응용 프로그램이 응용 프로그램을 실제로 사용하고있을 때 응용 프로그램이 사용자를 대신하여 요청을 수행하도록합니다. 이 권한은 OAuth 엔드 포인트가 반환 한 액세스 토큰을 오래도록 만듭니다.

여기를 참조하십시오 : https://developers.facebook.com/docs/reference/api/permissions/

+0

내가 publish_stream "워드 프로세서에 따라 때문에이 offline_access를 가질 필요가 있다고 생각하지 않는다 => 콘텐츠, 의견을 게시하기 위해 응용 프로그램을 설정하여, 사용자의 스트림과에 좋아 이 허락을 통해 offline_access를 요구하지 않고 언제든지 사용자의 피드에 콘텐츠를 게시 할 수 있습니다. 그러나 Facebook은 사용자 시작 공유 모델을 권장합니다. " 그러나 이것이 출판을 위해 여전히 토큰을 사용해야한다는 것을 의미하는지 확실하지 않습니다. – chell

+0

당신 말이 맞습니다. 그래서 이미 구현하려고 시도 했습니까? 어쨌든 액세스 토큰을 저장해야 할 수도 있습니다. – borisdiakur

+0

게시 할 수있게되었습니다. 위의 편집에서 보여 주었던 것처럼했습니다. 그래도 올바른 방향으로 밀어 주셔서 감사합니다. – chell

관련 문제