1

RESTを使用してphpでfirebaseに書き込もうとしていますが、許可が拒否され続けています

私はこのようなテストファイルを使用しています:

$url = 'https://my.firebase.url/';
$atoken = '?auth=MY FIREBASE SECRET';

$fb = new fireBase($url);

$todos = array(
        'name' => 'Pick the milk',
        'priority' => 1
        );

$todoPath = '/test/test';

printf("Database: %s\n", $url);

printf("Sending data to %s\n", $todoPath);
$response = $fb->set($todoPath, $todos.$atoken);
printf("Result: %s\n", $response);

printf("Reading data from %s\n", $todoPath);
$response = $fb->get($todoPath);
printf("Result: %s\n", $response);

管理者がfirebaseに書き込むことができるのは特定の承認されたユーザー「私」だけであるが、誰でもそこから読み取ることができるというルールを設定しています。しかし、今ではそれはphpにあり、「SECRET」がそれを機能させると思っていたか、少なくともfirebase DOCSによってそれを信じるようになりました。

それで、私は何を間違っていますか?

ありがとうございました!

アップデート:

だから私は変更しました:

$atoken = '?auth=MY FIREBASE SECRET';

することが

$atoken = '.json?auth=MY FIREBASE SECRET';

そして私はそれをここに置きます:

printf("Sending data to %s\n", $todoPath.$atoken);
    $response = $fb->set($todoPath.$atoken, $todos);
    printf("Result: %s\n", $response);

    printf("Reading data from %s\n", $todoPath.$atoken);
    $response = $fb->get($todoPath.$atoken);
    printf("Result: %s\n", $response);

今、私はこのエラーを受け取ります:

04Database: https://MYDATABASE/ Sending data to /test/test.json?auth=MY FIREBASE SECRET Result: { "error" : "invalid_token: Could not parse auth token." } Reading data from /test/test.json?auth=MY FIREBASE SECRET Result: { "error" : "invalid_token: Could not parse auth token." } 
4

2 に答える 2

1

REST仕様はこれを許可しているようです。私もあなたと同じように読みました。

あなたが得ている正確なエラーは何ですか?これらの操作を正確に実行できることを Forge のシミュレーターで確認しましたか?

PHP コードに関しては、1 つのことが際立っています。

あなたが持っている$response = $fb->set($todoPath, $todos.$atoken);

$todos (配列) と $atoken (文字列) を連結していますが、これは機能しません。http_build_queryまたはjson_encodeを使用するつもりでしたか?

firebase-php libを見てみると、とにかくそれらを文字列にするべきではありません。これを行う必要があるようです:

$todos = array(
        'name' => 'Pick the milk',
        'priority' => 1,
        'auth' => MY_FIREBASE_SECRET
        );
$response = $fb->set($todoPath, $todos);

または多分

$todos = array(
        'name' => 'Pick the milk',
        'priority' => 1
        );
$response = $fb->set($todoPath.$atoken, $todos);
于 2013-05-01T22:55:34.157 に答える