4

次のブログ投稿に従って、アプリを使用して Facebook イベントをリモートで作成する方法を見つけました。アプリから画像をロードする際に問題が発生しましたが、画像がアプリにローカルに保存されていないため、画像は AWS に保存されています。

    @graph = Koala::Facebook::GraphAPI.new(@token)  
    picture = Koala::UploadableIO.new(@event.photo.url(:small))
    params = {
        :picture => picture,
        :name => 'Event name',
        :description => 'Event descriptio
        :start_time => datetime,
       }

私のアプリでFacebookイベントが作成されたときにFacebookに写真を送信するために現在使用している次のコードです。ただし、問題は、Rails がエラーをスローしていることです: No such file or directory - http://s3.amazonaws.com/ColumbiaEventsApp/photos/21/small.jpeg?1312521889

Rails 開発の経験が豊富な人で、URL をファイルへのパスのように扱う方法があるかどうか知っている人はいますか? UploadableIO クラスはファイルへのパスを想定していますが、Ruby で URL をファイルパスのように扱う方法があるかどうかを理解するのに苦労しています。アプリに保存した写真を Facebook に読み込む方法は次のとおりです。

picture = Koala::UploadableIO.new(File.open("イベント画像へのパス"))

それが役立つ場合。

この問題に関する新しい洞察に感謝します。

4

4 に答える 4

9

わかりましたので、遊んで写真を投稿する方法を見つけました。

基本的に私が行ったことは、「open-uri」ライブラリを使用して画像リンクをファイル オブジェクトに変換し、それを UploadableIO に渡して Facebook に送信することでした。これは機能したコードです:

require 'open-uri'
OpenURI::Buffer.send :remove_const, 'StringMax' if OpenURI::Buffer.const_defined?('StringMax')
OpenURI::Buffer.const_set 'StringMax', 0
picture = Koala::UploadableIO.new(open(@event.photo.url(:small)).path, 'image')
params = {
  picture:     picture,
  name:        @event.name,
  description: @event.description,
  location:    @event.location,
  start_time:  datetime
}
@graph.put_object('me', 'events', params )

OpenURI 定数 StringMax を変更する必要がありました。これは、私が使用していた画像ファイルが十分に小さかったため、ファイルがファイル オブジェクトではなく文字列として処理されていたためです。

これがこれを修正しようとしている人に役立つことを願っています!

于 2011-08-25T18:54:33.597 に答える
4

Koala 1.2.1 では、非常に洗練されたソリューションです。アルバムを作成し、リモートの AWS リンクからアルバムにアップロードするためのサンプル コードを次に示します (ところで、これには PHP SDK を使用した PHP で約 30 行かかりました!

@foo = Foo.find(params[:foo_id])        
albuminfo = @graph.put_object('me','albums', :name=>@foo.title)
album_id = albuminfo["id"]    
@graph.put_picture(@foo.remote_image_path,{}, album_id)
于 2011-10-07T17:26:08.090 に答える
1

Facebook は最近、一般にアクセス可能な URL ( http://developers.facebook.com/blog/post/526/ ) を使用して写真を投稿できるようにするアップデートをリリースしました。使用しているコアラ ライブラリはそれをサポートしているため ( https://github.com/arsduo/koala/blob/master/lib/koala/graph_api.rb#L102 )、ホストしている写真を投稿できるはずです。 OpenURI::Buffer を使用せずに S3 で。

于 2011-08-31T09:03:44.377 に答える