2011-11-18 98 views
1

我正在嘗試通過Facebook應用程序中的Facebook用戶測試權限。在Rails中檢查Facebook用戶權限

這就是Facebook的,當我檢查的權限返回:

#<HTTParty::Response:0x7f82dc963820 @parsed_response={"data"=>[{"installed"=>1, "status_update"=>1, "photo_upload"=>1, "video_upload"=>1, "offline_access"=>1, "email"=>1, "create_note"=>1, "share_item"=>1, "publish_stream"=>1, "publish_actions"=>1, "user_likes"=>1, "user_about_me"=>1}]} 

所以,我要來檢查publish_actions權限,這,是存在的。這是我已經嘗試過:

def self.to_facebook(user, chapter, action) 
    auth = Authorization.find_by_user_id(user) 
    if self.user_has_granted_publish_actions?(auth) 
     ret = HTTParty.post('https://graph.facebook.com/' + "#{auth.uid}" + '/bookstore:' + "#{action}" + '?access_token=' + "#{auth.token}" + '&chapter=http://samples.ogp.me/1403776044881') 
    else 
     message = URI.escape('Test message') 
     ret = HTTParty.post('https://graph.facebook.com/' + "#{auth.uid}" + '/feed' + '?access_token=' + "#{auth.token}" + '&message=' + "#{message}") 
    end 
    end 

    def self.user_has_granted_publish_actions?(authorization) 
    auth = Authorization.find(authorization) 
    ret = HTTParty.get('https://graph.facebook.com/' + "#{auth.uid}" + '/permissions' + '?access_token=' + "#{auth.token}") 
    return true if ret.parsed_response['data'].include?('publish_actions') && ret.parsed_response['data']['publish_actions'] == 1 
    end 

我認爲問題可能是在這一行,因爲它似乎是方法返回false和默認消息被張貼。

return true if ret.parsed_response['data'].include?('publish_actions') && ret.parsed_response['data']['publish_actions'] == 1 

對我在做什麼有什麼想法嗎?

回答

2

發現問題。此作品:

return true if ret.parsed_response['data'][0].has_key?('publish_actions') && ret.parsed_response['data'][0]['publish_actions'] == 1