HMS Core推送服務支持開發者使用HTTPS協議接入Push服務端,可以從伺服器發送下行消息給終端設備。這篇文章彙總了服務端下發消息最常見的6個錯誤碼,並提供了原因分析和解決方法,有遇到類似問題的開發者們快瞭解一下吧。 錯誤碼一:80200001," Oauth認證錯誤" 原因分析: 下發消息未 ...
HMS Core推送服務支持開發者使用HTTPS協議接入Push服務端,可以從伺服器發送下行消息給終端設備。這篇文章彙總了服務端下發消息最常見的6個錯誤碼,並提供了原因分析和解決方法,有遇到類似問題的開發者們快瞭解一下吧。
錯誤碼一:80200001," Oauth認證錯誤"
原因分析:
- 下發消息未添加Authorization請求參數或值為空。
- 應用A的APPID申請的Access Token,卻用於給應用B推送消息,也會出現此錯誤碼。
申請Access Token
下發消息
解決方法:
-
排查請求HTTP頭中是否有入參Authorization請求參數。Authorization獲取方式可參考文檔、下行消息API可參考文檔。
-
獲取Access Token使用的APPID和下發消息使用的APPID需要保持一致。
錯誤碼二:80300007,"Token無效錯誤"
原因分析:
- token不合法,token中多或少了字元,例如下圖中多了個空格。
- 給應用A下發消息,token卻是應用B的,這種情況也是原因之一。
解決方法:
-
檢查token參數是否正確;
-
確保下發消息使用的token,是獲取於目標應用的
錯誤碼三:80300010,"消息體中的Token數量不符合預設值"
原因分析:
-
開發者將“message”欄位拼寫錯誤,示例圖中message欄位結尾多了 'r';
-
token位置不正確,欄位結構問題;
-
下發的token數量超過了限制,或token為空。
解決方法:
-
確保message、token欄位寫入正確;
-
message欄位包含token,與 "android"同級;
- token的數量應在1-1000個,確認token參數的數量,參考欄位結構及說明請參考文檔。
錯誤碼四:80200003,"Oauth Token過期"
原因分析:
-
Authorization請求參數值中的Access Token已過期
-
請求參數值不正確,多或少了其他字元。
解決方法:
-
Access Token有效期為一個小時,若超過限定時間,則需要重新獲取並使用最新Access Token下發消息。重新獲取Access Token方法可參考文檔
-
確保使用的Access Token與獲取的一致,複製Access Token時出現轉義字元,需要將“/”還原為“/”。
錯誤碼五:80100016,"消息裡面含有敏感信息"
原因分析:
出現這種報錯說明推送消息內容中含有敏感信息
解決方法:
-
由於不提供敏感詞庫,需要開發者自行檢測內容;
-
開發者可以接入推必安,下發消息通過推必安審核後,華為不會二次審核。接入推必安的流程可參考文檔。
註意事項:
- 推必安審核通過後,需要將推必安返回通過的結果添加到華為Review欄位的result對象中,這樣下發消息時華為才能知道消息審核已通過,華為也不會進行二次審核。
"review": [
{
"reviewer": "tuibian",[]()
"type": 0,
"result": {
//以下為推必安返回結果
"code": 200,
"data": {
"auditEngine": "t****ine",
"auditId": "0f74b*******0b3f490d",
"labels": []
},
"msg": "Pass",
"sign": "MEQCIBHc********IqLjw=="
}
}
]
}
- 並不是將整個消息體都放到推必安“content”欄位中,需要審核的是“message”裡面的內容,同時會對消息體內容按ASCII碼升序排序後轉為字元串格式進行審核。
{
"validate_only":false,
"message":{
//以下部分需要審核
"notification":{
"title":"message title",
"body":"message body"
},
"android":{
"collapse_key":0,
"notification":{
"click_action":{
"type":2,
"url":"https://example.com"
}
}
},
"token":[
"pushtoken1"
]
}
}
- 由於審核過程繁瑣,建議減少下發欄位的使用,這樣操作更簡單也會避免下發消息時出現80100018錯誤碼,該錯誤碼指發給三方機構審核的消息體與下發時的消息體不一致。
錯誤碼六:sub_error":57303,"error_description":"appid is overload blocked","error":1302
原因分析:
過多請求access_token被流控,流控閾值為1000個/5分鐘。
解決方法:
調整請求邏輯,access_token有效期為一個小時,無需頻繁申請。流控5分鐘後重置,可以再次申請。更多access_token相關限制可參考文檔。
瞭解更多詳情>>
訪問華為開發者聯盟官網
獲取開髮指導文檔
華為移動服務開源倉庫地址:GitHub、Gitee
關註我們,第一時間瞭解 HMS Core 最新技術資訊~