如何使用OmniAuth Facebook,Sinatra和Datamapper进行'Like-gate'



对于我正在构建的应用程序,我需要能够确定Facebook用户与应用程序所在页面的关系。我希望提供以下功能:

1) 如果用户喜欢该页面,请将其引导到另一个页面2) 如果用户不喜欢某个页面,请将其引导到另一个页面3) 如果用户是当前页面的管理员,请将他们引导到另一个页面

Auth Hash架构(https://github.com/intridea/omniauth/wiki/Auth-Hash-Schema)没有提供如何访问用户点赞的信息,也没有说明他们是否喜欢:a)喜欢或不喜欢当前页面,或者B)是当前页面的管理员。

此外,我在互联网上进行了研究,但找不到任何具体的Ruby或Sinatra例子来说明如何做到这一点。我最接近的是(https://github.com/chrissloan/sinatra-book/blob/master/app.rb)然而,这个用户FBGraph(我使用的是Omniauth Facebook)和这个脚本并没有对页面的管理员用户进行任何区分。

因此,我想知道我在页面选项卡上区分用户的方法是否本质上是错误的,并且想知道是否还有另一个实现所需目标的过程。

总之,我正在尝试创建:

  • 应用程序管理员可以访问的后端。当应用程序管理员进入页面时,会显示管理面板
  • 一个前端,显示用户是否喜欢该页面,并根据该状态向他们显示特定内容——一个"赞门"

感谢您的阅读,如果您能提供帮助,我们将不胜感激。

我想出了一些代码,但从文档中我不确定它是否是有效的语法。从一开始就是实验性的部分,上面的代码是有效的,目前正在使用中。

   get '/auth/:provider/callback' do
  content_type 'application/json'
  JSON.generate(request.env)
  auth = request.env["omniauth.auth"]
  puts auth
=begin
  if auth['page']['admin'] == true ***not sure if admin is valid syntax***
    #check user database and move to admin side
  else if auth['page']['liked'] == true
    #allow to download endpoint
  else
    auth['page']['liked'] = false
    #direct to wall to like
  end

我通过OmniAuth授权,然后当用户在Facebook页面上打开应用程序时,从Facebook生成签名请求,从而解决了这个问题。

最新更新