如何用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
如何用Tigase监控nginx服务?

1 前言 一个问题,一篇文章,一出故事。 笔者今天遇到Nginx代理的上游服务器报错,由于Nginx …

Bash
如何确定LDAP的端口通讯正常?

1 前言 一个问题,一篇文章,一出故事。 今天遇到nc测试ldap的389,范例如下, ncat – …

Bash
如何自动启动失败的服务?

1 前言 一个问题,一篇文章,一出故事。 今天遇到一个内部服务异常退出,我们希望有个守护进程每隔5分 …