2016-05-31 22 views
1

サービスアカウントとしてruby to firebaseで認証しようとしています。 は、だから私はいつもやったように私はこれまでのところ、(他のGoogleサービスで)Googleの認証のlibを使用していなかったものを:REST API経由でのRubyの認証方法

require 'googleauth' 
scopes = ["https://www.googleapis.com/auth/firebase.database"] 
tt = Google::Auth.get_application_default(scopes).fetch_access_token 

私はTT [「access_tokenは」]を取得し、私は

ような何かを行いますcurl -X POST -d '{"user_id" : "jack", "text" : "Ahoy!"}' 'https://project-xxxxxxxxxxxxxxxxxxx.firebaseio.com/message_list.json?access_token=ya29.CjHzAsjcGEQsSppI9AKCV9g4Uen7qlREI3N_nCGDsWkLh6ZSCg5JmNYzIU8NuV6PAq7h'

彼らはhttps://firebase.google.com/docs/reference/rest/database/user-auth#section-get

に言うと、私が手のように:!。 許可が私たちのDBルールに我々が言ったのでそれがある(拒否されたAUTH = nullを は、だから私は、AHEを行ってきました広告と?auth=ya29.CjHzAsjcGEQsSppI9AKCV9g4Uen7qlREI3N_nCGDsWkLh6ZSCg5JmNYzIU8NuV6PAq7h

と呼ばれ、私が得た:

"{\n \"error\" : \"Could not parse auth token.\"\n}\n" 

がどのように私は... nodejsなしFirebaseに認証するために、単純なRESTを想定しています?

助けてください!

ありがとうございます!

+0

Googleから返ってきたアクセストークンは、Firebaseの有効なトークンではありません。それを交換するには、本当にJWTを作成するために信頼できるプロセス(サーバーなど)が必要です。また、http://stackoverflow.com/questions/35247677/firebase-authentication-via-rest –

+0

@FrankvanPuffelenを参照してください、それは子供のヘッダーがトークンにないと言った... - Himberjack 13分前 – Himberjack

答えて

3

ここでは上記のようにあなたがアクセストークンを持っていると仮定すると、完全に焼いた例です:

require 'cgi' 
require 'json' 
require 'net/https' 
require 'uri' 

ACCESS_TOKEN = 'XXX' 
DATABASE_NAME = 'YYY' 

path = '/example' 
auth_variable = {uid: 'ruby-admin'} 
payload = {my: 'data'} 

uri = URI("https://#{DATABASE_NAME}.firebaseio.com#{path}.json?auth_variable_override=#{CGI::escape auth_variable.to_json}") 
req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json') 

req.body = payload.to_json 
req['Authorization'] = "Bearer #{ACCESS_TOKEN}" 

http = Net::HTTP.new(uri.hostname, uri.port) 
http.use_ssl = true 

res = http.request(req) 

puts res.body 

あなたがしたいあなたは、セキュリティルールで利用可能なauth変数を変更するauth_variableを編集することができ、かつ​​は明らかに自分のデータであり、役職。

関連する問題