簡體   English   中英

API OneSignal With CURL 我收到此錯誤(請包括區分大小寫的 header 授權:基本或 Bearer token="" 以及有效的 REST API 密鑰

[英]API OneSignal With CURL i get this Error (Please include a case-sensitive header of Authorization: Basic or Bearer token="" with a valid REST API key

我想使用參數“included_segments”向(細分)目標發送通知,例如 [“Active Users”],但是當我在 PHP 中使用 CURL 調用 API 時,我收到此錯誤:(請包括授權的區分大小寫的 header:基本或 Bearer token="" 使用有效的 REST API 密鑰。)。

然而,當我將目標從參數“included_segments”更改為“include_player_ids”時,代碼運行良好。但我想要“included_segments”。請幫助我......

鏈接到 REST API 參考

  • 這是我的代碼:`
function Copts($titlEN,$titlAR,$contEN,$contAR,$icon,$img){

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://onesignal.com/api/v1/notifications',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS =>'{
        "app_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "included_segments": ["Active Users"],
        "contents": {"en": "'.$contEN.'"},
        "headings": {"en": "'.$titlEN.'"},
        "global_image": "'.$img.'",
        "large_icon": "'.$icon.'"
      }',
    CURLOPT_HTTPHEADER => array(
      'Content-Type: application/json; charset=utf-8',
      'Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    )
));
 
return json_decode(curl_exec($curl),true);

}

`

如果您將值顯示為: ($titlEN,$titlAR,$contEN,$contAR,$icon,$img)可能會有所幫助

將此添加到您的CURLOPT_HTTPHEADER

'Accept: application/json'

我查看了文檔中的示例 curl
這是他們的例子:

curl --request POST \
     --url https://onesignal.com/api/v1/notifications \
     --header 'Authorization: Basic YOUR_REST_API_KEY' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
     "app_id": "string",
     "included_segments": [
          "string"
     ],
     "external_id": "string",
     "contents": {
          "en": "English or Any Language Message",
          "es": "Spanish Message"
     },
     "name": "INTERNAL_CAMPAIGN_NAME",
     "send_after": "string",
     "delayed_option": "string",
     "delivery_time_of_day": "string",
     "throttle_rate_per_minute": 0
}'

這是他們的 curl 使用https://curlconverter.com/php/轉換為 PHP 的方式:
我認為可以刪除所有\n和無關的空格。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://onesignal.com/api/v1/notifications');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization' => 'Basic YOUR_REST_API_KEY',
    'accept' => 'application/json',
    'content-type' => 'application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '\n{\n     "app_id": "string",\n     "included_segments": [\n          "string"\n     ],\n     "external_id": "string",\n     "contents": {\n          "en": "English or Any Language Message",\n          "es": "Spanish Message"\n     },\n     "name": "INTERNAL_CAMPAIGN_NAME",\n     "send_after": "string",\n     "delayed_option": "string",\n     "delivery_time_of_day": "string",\n     "throttle_rate_per_minute": 0\n}');

我不推薦使用

 curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization' => 'Basic YOUR_REST_API_KEY',
        'accept' => 'application/json',
        'content-type' => 'application/json',
    ]);

使用它來制作您的 HTTPHEADER:

$headers = array();
$headers[] = 'Authorization: Basic YOUR_REST_API_KEY';
$headers[] = 'Accept: application/json';
$headers[] = 'Content-Type: application/json';

curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);

我更喜歡個人curl_setopt()
而不是curl_setopt_array()
但是我老了,快70歲了。
我的個人資料照片是最新的。

問題是REST API KEYS不正確。 USER AUTH KEY而不是REST API KEYS在這里找到了它:

儀表板 -> 設置 -> 鍵和 ID

請參閱此處的文檔: https://documentation.onesignal.com/docs/accounts-and-keys

.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM