如何用Base Shell推送华为消息?

Bash

1 前言

一个问题,一篇文章,一出故事。
今天遇到服务器推送华为消息失败,于是尝试使用curl去测试下华为的接口,以便可以发现问题。

2 最佳实践

2.1 创建测试脚本

vim ~/scripts/pushMsg2Huawei.sh 

加入如下脚本,

#!/bin/bash

# 设置变量
clientID="xxxxxx"
clientSecret="xxxxxx"
deviceToken="xxxxxx"
tokenURL="https://oauth-login.cloud.huawei.com/oauth2/v3/token"
pushURL="https://push-api.cloud.huawei.com/v1/$clientID/messages:send"


# 获取访问令牌
accessToken=$(curl -s -X POST "$tokenURL" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials" \
     -d "client_id=$clientID" \
     -d "client_secret=$clientSecret" | jq -r '.access_token')

# 检查是否成功获取到访问令牌
if [ -z "$accessToken" ]; then
    echo "获取访问令牌失败,请检查您的凭据和请求!"
    exit 1
fi

echo "成功获取访问令牌: $accessToken"

reSponse=$(curl -s -X POST "$pushURL" \
     -H "Authorization: Bearer $accessToken" \
     -H "Content-Type: application/json" \
     -d '{
           "message": {
               "notification": {
                   "title": "您的标题",
                   "body": "您的消息内容。"
               },
               "to": "'"$deviceToken"'"
           }
         }')

# 输出响应
echo "推送消息响应: $reSponse"

2.2 测试脚本

bash ~/scripts/pushMsg2Huawei.sh 

可见如下输出,

成功获取访问令牌: xxxx
推送消息响应: {"code":"80300010","msg":"token count should within 1 and 1,000","requestId":"176974409235304180028001"}
没有评论

发表回复

Bash
如何自动根据职位设置NextCloud用户配额?

1 前言 一个问题,一篇文章,一出故事。 今天更新一个自动根据AD中的职位(title)设置Next …

Bash
如何在远程主机执行函数?

1 前言 一个问题,一篇文章,一出故事。 笔者今天想在远程机器执行本地脚本定义的函数,于是整理当前章 …

Bash
如何实现监视多台服务器的日志?

1 前言 一个问题,一篇文章,一出故事。 今天遇到需要根据PostFix的特定邮箱地址触发一个电话报 …