1

アカウントデータを必要としないように、メールを使用してリンクされたアカウントに送信するだけで、プッシュブレットで簡単なプッシュ通知を送信しようとしています。(こちらのリファレンスを参照してください: https://docs.pushbullet.com/#pushes )

したがって、私はここで(だけでなく)見つけたphpで非cURLメソッドを使用しています: How do I send a POST request with PHP?

残念ながら、次のようなエラーが返されます。

<br />
<b>Warning</b>:  file_get_contents(https://api.pushbullet.com/v2/pushes): failed to open stream: HTTP request failed! HTTP/1.0 401 Unauthorized
 in <b>/path/to/function.php</b> on line <b>42</b><br />
bool(false)

file_get_contents に URL を使用するオプションが「オン」に設定されています。

私のコード:

$pushdata = array(
    "email"     => $email,
    "type"      => "link",
    "title"     => "Demo Pushbullet Notification",
    "body"      => "You have new comment(s)!",
    "url"       => "http://demo.example.com/comments"
);

//Post without cURL

$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n"."Authorization: Bearer <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>\r\n",
        'method'  => 'POST',
        'content' => http_build_query($pushdata),
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents("https://api.pushbullet.com/v2/pushes", false, $context, -1, 40000);
var_dump($result);

編集:コードをクリストファーヘッセの応答に変更しましたが、まだ機能しません。また、プッシュすることを理解しているので、アクセストークンも必要ありません。ニュートラルからリンクされたメールに通知をプッシュしていると理解しています。たぶん私は間違っているかもしれませんが、アクセストークンはそれを修正しません。

EDIT(解決済み):通知をプッシュするにはアクセストークンが必要であり、この方法では機能しないため、cURLで機能します

4

3 に答える 3

1

ドキュメントで定義されているヘッダーとして API キーを渡すことができるように、これには cURL を使用する必要があります: https://docs.pushbullet.com/#http

<?php

$curl = curl_init('https://api.pushbullet.com/v2/pushes');

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer <your_access_token_here>']);
curl_setopt($curl, CURLOPT_POSTFIELDS, ["email" => $email, "type" => "link", "title" => "Demo Pushbullet Notification", "body" => "You have new comment(s)!", "url" => "http://demo.example.com/comments"]);

// UN-COMMENT TO BYPASS THE SSL VERIFICATION IF YOU DON'T HAVE THE CERT BUNDLE (NOT RECOMMENDED).
// curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($curl);

print_r($response);

このコードは完全に私の頭の中から外れており、テストされていません

簡単に見られるようにオプションを分割しましたが、それらを組み合わせて配列にして、経由で渡すことができますcurl_setoptarray($curl, []);

于 2015-05-27T00:08:08.013 に答える
1

ユーザー アカウントのアクセス トークンが不足しているようです。https://www.pushbullet.com/accountで見つけることができます。'Authorization': 'Bearer ACCESS_TOKEN_HERE' のようなヘッダーに含める必要があります。

于 2015-05-26T23:44:43.117 に答える