Domanda

Ho un problema davvero strano con la mia app Rails e la beta del grafico aperto di Facebook. Ogni volta che poso un'azione su un oggetto, Facebook restituisce un errore che sembra indicare che l'URL dell'oggetto non può essere raggiunto o il raschietto OG non sta raschiando correttamente l'URL.

Tuttavia, quando prendo l'URL, l'app sta generando per il post su Facebook e utilizzo manualmente la gemma httparty per pubblicarlo, funziona.

Ecco il mio codice:

class Post < ActiveRecord::Base
  FB_CONFIG = YAML.load_file("#{Rails.root}/config/initializers/facebook.yml")[Rails.env]

  def self.to_facebook_og(obj, obj_id, verb, auth, extra)
    #requires that a user has granted `publish_actions`
    found_obj = obj.classify.constantize.find(obj_id) #find the actual object we're talking about
    post_url = self.construct_facebook_action_url(obj, found_obj, verb, auth, extra) #create the URL
    begin
      ret = HTTParty.post(post_url)
      logger.info "Facebook Post Action Response = #{ret}"
    rescue HTTParty::ResponseError => e #handle any errors
      logger.error {"FACEBOOK Response #{ret.code} / #{e.inspect}"}
      flash.alert {"There was a Facebook problem. Please try again."}
      return
    end
  end

  def self.construct_facebook_action_url(obj, found_obj, verb, auth, extra)
    base = 'https://graph.facebook.com/'
    uid = auth.uid
    namespace = FB_CONFIG['namespace']
    token = "?access_token=#{auth.token}"
    og_url = "#{obj}=http://theshortestfiction.com/#{obj.pluralize}/#{found_obj.id}"
    fb_url = base + uid + '/' + namespace + ':' + verb + token + '&' + og_url + extra
    logger.info fb_url
    fb_url
  end

  def self.lint_og_object(obj_url)
   lint_ret = HTTParty.post("https://developers.facebook.com/tools/lint/?url=#{obj_url}&format=json")
   logger.info "Facebook Linter Response = #{lint_ret}"
  end



end

Quando un oggetto viene letto tramite il metodo dello spettacolo del suo controller, l'app chiama Post.to_facebook. Dai miei registri, posso vederlo Post.construct_facebook_action_url sta costruendo l'URL adeguato (perché come ho detto, posso estrarre l'URL dai tronchi e pubblicarlo manualmente dalla console). Quindi, suppongo che ci sia così problema su come sto passando l'URL a Httparty? Facebook sembra in grado di dire quale oggetto lo url dovrebbe guardare. Perché il codice che ho scritto non funziona, ma manualmente nella console, lo fa?

Ancora più strano - Una volta che una volta c'è stata un'azione post -successo sull'oggetto, il codice sembra funzionare in modo coerente. Facebook insiste Il problema è che gli URL degli oggetti non sono raggiungibili, ma non riesco a capire come non sono, dal momento che posso navigare a loro.

È stato utile?

Soluzione

Penso che questo sia in realtà un problema di timeout.

Ho avuto lo stesso identico problema di te, usando HTTParty e ottenendo l'URL non può essere raggiunto l'errore.

Ho spostato il codice in un processo di fondo usando Resque e ha risolto il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top