标签: koala

如何通过rails中的图形api检查特定用户的facebook应用程序权限?

我想检查用户是否对我的应用程序授予了publish_stream权限.如果不想获得publish_stream权限.

facebook facebook-graph-api koala ruby-on-rails-3.1

7
推荐指数
2
解决办法
3371
查看次数

如何使用来自SERVER(!)的Koala Gem更新/延长Facebook访问令牌,完全没有用户交互

我的情况和我所拥有的:

  1. Rails应用程序(Rails的最新版本)
  2. 考拉宝石(上一版)
  3. 1(一)Facebook用户(例如 - 这是我),就是这样,没有更多的用户(!)
  4. 没有任何FB登录表单/类似内容的网站页面

现在的情况:

我在一个网站上创建页面,我的代码应从我的Facebook帐户中提取最后的帖子并在该页面上显示.

我已经做了什么:

  1. 我添加了考拉宝石
  2. 然后我在FB的开发者帐户下创建了应用程序,并授予该应用程序对我的个人资料的完全访问权限(相同的个人资料 - 开发人员和我希望提取帖子)
  3. 然后我从这里创建了应用程序访问令牌(https://developers.facebook.com/tools/accesstoken) - 当我调试它时,FB告诉我,这个令牌是一个短期令牌,在1小时后到期.
  4. 然后我在我的模型中创建了该代码:

    oauth = Koala::Facebook::OAuth.new(APP_ID, APP_SECRET)
    new_access_info = oauth.exchange_access_token_info self.get_token <- here i pull token from DB
    
    new_access_token = new_access_info["access_token"]
    new_access_expires_at = DateTime.now + new_access_info["expires"].to_i.seconds
    
    self.update_all(:token => new_access_token) ***<- saving token in db***
    self.update_all(:exp => new_access_expires_at) ***<- saving expiration of token in db***
    
    @facebook ||= Koala::Facebook::API.new(self.get_token)
    
    Run Code Online (Sandbox Code Playgroud)

所以,我第一次将我的短期令牌直接放在db中,所以我的代码可以从那里拉出来,然后,当我重新加载页面时,我得到了新的,长期令牌(它有截止日期12/01/2015) .

但!当我每次重新加载页面时,我会获得新令牌,但是有SAME到期日期(FB的调试器说我一样,当我从我的页面复制令牌并将其粘贴到调试器中时).

我甚至试图在不同的日子里做这件事,因为我读到"某个地方"令牌翻新期是每天一次,但是:

令牌总是不同,但有效期始终相同.

我需要的:

更新该令牌或编写代码,以便自动更新令牌而无需我的操作,因为没有登录窗口或类似的东西.它应该只在服务器端工作.

有什么想法吗?已经阅读了很多信息和类似的问题,但大多数问题都与用户交互有关,比如以适当的形式登录等等,所以 - 没有运气:/

authentication facebook ruby-on-rails omniauth koala

7
推荐指数
1
解决办法
1393
查看次数

如何让facebook页面管理员只选择他们希望我的应用管理的特定页面(manage_pages)

我正在使用Ruby on Rails和Koala gem构建一个facebook应用程序来构建我自己的登录流程.

https://github.com/arsduo/koala https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/

我的问题非常简单.

假设以下情况:

- 尝试连接到我的应用程序的用户有多个他们管理的Facebook页面.我希望他们能够只选择他们希望我管理的特定页面,同时拒绝访问其余页面.

原因是很多将使用我的应用程序的管理员管理大量页面.当我只需要一小部分页面的权限时,我无法想象他们可以获得所有页面的权限.

我正在使用Ruby on Rails

ruby facebook ruby-on-rails facebook-graph-api koala

7
推荐指数
1
解决办法
76
查看次数

在Rails 3应用程序中使用带有Devise和OmniAuth的Koala获取SSL错误

我正在使用Devise/OmniAuth和Koala构建一个Rails 3应用程序,我收到以下SSL错误:

OpenSSL::SSL::SSLError in Users/omniauth callbacksController#facebook
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Run Code Online (Sandbox Code Playgroud)

导致此错误的代码是:

@graph = Koala::Facebook::GraphAPI.new(@token)
@friends = @graph.get_connections("me", "friends")
Run Code Online (Sandbox Code Playgroud)

我正在使用Devise与OmniAuth进行身份验证,这是有效的.然后,我将获取返回的facebook令牌,并尝试将其与Koala一起使用,如上所示.这就是造成这个错误的原因.

值得注意的是,我最初收到了与Devise&OmniAuth相同的错误.有一些关于此错误的主题,我可以通过设置我的config/initialisers/devise.rb来解决它,

config.omniauth :facebook, APPID, APPKEY, {:client_options => {:ssl => {:ca_file =>  "/opt/local/share/curl/curl-ca-bundle.crt"}}} 
Run Code Online (Sandbox Code Playgroud)

我猜我需要为Koala提供类似的配置,以便它知道在哪里检索本地ca_file.我在文档中找不到任何关于如何这样做的说明.有关如何执行此操作的任何想法,或一般如何避免错误?

我的开发环境是OSX.

facebook devise omniauth ruby-on-rails-3 koala

6
推荐指数
2
解决办法
1940
查看次数

让OmniAuth,Devise和Koala一起工作

我有一个应用程序,我正在使用devise和omniauth实现身份验证.我已经找到了登录/退出等,我想知道的是,连接到用户图形api端点的最有效方法是初始化并准备好在我的应用程序中使用.

例如:如果在我想要的个人资料页面上,

profile_image = current_user.fbgraph.get_picture("me")
Run Code Online (Sandbox Code Playgroud)

如何使用最少的API调用完成此操作(我将在整个应用程序中使用类似的调用)

devise omniauth ruby-on-rails-3 koala

6
推荐指数
1
解决办法
2981
查看次数

使用Graph API查明用户是否与其他一个用户成为朋友

我试图找出用户A是否是用户B的朋友,但我不想要用户A的整个朋友列表.有没有办法,使用Koala/the Graph API简单地找出用户A是否只是使用用户B的Facebook ID与用户B的朋友?

ruby-on-rails facebook-graph-api koala

6
推荐指数
1
解决办法
2042
查看次数

使用Koala发布多张图片:: Facebook :: GraphAPIMethods #put_connections

我想用Koala#put_connection或更具体的方法(如#put_picture)将多张图片发布到我的Facebook群组.单张图片发布示例:

graph = Koala::Facebook::API.new(token)
graph.put_picture("picture_url", {:message => "Message"}, "my_group_id")
Run Code Online (Sandbox Code Playgroud)

任何人都有想法吗?谢谢

ruby-on-rails koala

6
推荐指数
1
解决办法
309
查看次数

考拉喜欢发帖

我目前正在使用考拉,所有似乎都在工作,但当试图使用以下来获得某些帖子上的喜欢我似乎得到的是项目数组

应用程序助手中的代码

    def facebook
    @facebook ||= Koala::Facebook::API.new(current_user.oauth_token)
    block_given? ? yield(@facebook) : @facebook
  rescue Koala::Facebook::APIError
    logger.info e.to_s
    nil
  end

def likes_count obj
    facebook.get_object(obj, :fields => "likes.summary(true)")
  end
Run Code Online (Sandbox Code Playgroud)

视图中的代码

=likes_count(feed['id'])
Run Code Online (Sandbox Code Playgroud)

结果返回

{"id"=>"846011512095715", "updated_time"=>"2014-06-22T11:11:45+0000", "likes"=>{"data"=>[{"id"=>"10152444475716893", "name"=>"Tahlia Fulton"}, {"id"=>"10152240895519022", "name"=>"Tim Raftery"}, {"id"=>"481256765338477", "name"=>"Gabby Taylor"}, {"id"=>"664803753573900", "name"=>"Harriet Ochsenbein"}, {"id"=>"10152453604228810", "name"=>"Kelly Jenkinson"}, {"id"=>"10152145864189249", "name"=>"David Glazzard"}, {"id"=>"10203193488711772", "name"=>"Bianca Love"}, {"id"=>"10152567265688833", "name"=>"Clare Duncan"}, {"id"=>"105513176145556", "name"=>"Frankston Hockey Club"}], "paging"=>{"cursors"=>{"after"=>"MTA1NTEzMTc2MTQ1NTU2", "before"=>"MTAxNTI0NDQ0NzU3MTY4OTM="}}, "summary"=>{"total_count"=>9}}}
Run Code Online (Sandbox Code Playgroud)

haml ruby-on-rails facebook-graph-api koala

6
推荐指数
1
解决办法
1759
查看次数

更新OSX后不编译SCSS到10.13(macOS High Sierra)

考拉版:2.2.0

错误消息:/scss/styles.scss /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/dependency.rb:319:in to_specs':找不到' 15个总宝石中的sass'(> = 0)(Gem :: LoadError)选中'GEM_PATH =/Users/monstercritic/.gem/ruby​​/2.3.0:/Library/Ruby/Gems/2.3.0: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/gems/2.3.0',executegem envfor来自/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/的更多信息lib/ruby​​/2.3.0/ruby​​gems/dependency.rb:328:into_spec'来自/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_gem. rb:65:在gem中来自/Applications/Koala.app/Contents/Resources/app.nw/bin/sass:17:in

ruby sass koala

6
推荐指数
1
解决办法
3810
查看次数

尝试使用Koala gem扩展Facebook oauth令牌

在参照:

http://rubydoc.info/github/arsduo/koala/master/Koala/Facebook/GraphAPIMethods#graph_call-instance_method

http://developers.facebook.com/roadmap/offline-access-removal/#extend_token


我的代码看起来像这样:

fb = Koala::Facebook::API.new(access_token)
fb.graph_call("/oauth/access_token", {"client_id" => app_id, "client_secret" => app_secret, "grant_type" => "fb_exchange_token", "fb_exchange_token" => access_token })
Run Code Online (Sandbox Code Playgroud)

虽然返回值包含扩展标记,但它抛出MultiJson :: DecodeError

MultiJson::DecodeError: 387: unexpected token at 'access_token=long-lived_token&expires=5184000]'
from /usr/local/rvm/gems/ruby-1.9.2-p136@dotcloud/gems/json-1.6.1/lib/json/common.rb:148:in `parse'
from /usr/local/rvm/gems/ruby-1.9.2-p136@dotcloud/gems/json-1.6.1/lib/json/common.rb:148:in `parse'
from /usr/local/rvm/gems/ruby-1.9.2-p136@dotcloud/gems/multi_json-1.0.3/lib/multi_json/engines/json_gem.rb:13:in `decode'
from /usr/local/rvm/gems/ruby-1.9.2-p136@dotcloud/gems/multi_json-1.0.3/lib/multi_json.rb:65:in `decode'
from /usr/local/rvm/gems/ruby-1.9.2-p136@dotcloud/gems/koala-1.3.0/lib/koala/api.rb:61:in `api'
from /usr/local/rvm/gems/ruby-1.9.2-p136@dotcloud/gems/koala-1.3.0/lib/koala/api/graph_api.rb:421:in `graph_call'
from (irb):7
from /usr/local/rvm/gems/ruby-1.9.2-p136@dotcloud/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in `start'
from /usr/local/rvm/gems/ruby-1.9.2-p136@dotcloud/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in `start'
from /usr/local/rvm/gems/ruby-1.9.2-p136@dotcloud/gems/railties-3.1.3/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我怀疑]导致错误的结局.我不确定这是Facebook错误还是错误处理.感谢有人可以帮助我.谢谢!


我也尝试使用Net :: HTTP.get(uri).但得到了以下错误.

Errno::ECONNRESET: Connection reset by peer
from /usr/local/rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/protocol.rb:135:in `read_nonblock' …
Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails facebook-graph-api ruby-on-rails-3 koala

5
推荐指数
1
解决办法
2283
查看次数