微信インタフェースはinvalid mediaを返します_id hint原因分析
2539 ワード
微信を呼び出して一時素材インタフェースを取得し、https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
分析手順
Step 1:微信公衆プラットフォーム技術ドキュメントのグローバルリターンコード説明を照会することにより、
パラメータ
必要かどうか
説明
access_token
はい
インタフェース証明書の呼び出し
media_id
はい
メディアファイルid
Step 3:バックエンド呼び出しのインタフェースに原因が見つからない以上、フロントエンド呼び出しの微信JS-SDK説明ドキュメントを引き続き表示します.画像インタフェースの下にアップロード画像インタフェースがあることが分かった.
上のインタフェースの
備考:アップロード画像の有効期間は3日間で、微信マルチメディアインタフェースで自分のサーバーに画像をダウンロードすることができます.ここで得られた
これで全体の流れが比較的通じるようになり、フロントエンドはまず
リファレンスドキュメントグローバルリターンコード説明 仮素材 を取得する.微信JS-SDK説明文書
{"errcode":40007,"errmsg":"invalid media_id hint: [01073723]"}
というエラーが発生しました分析手順
Step 1:微信公衆プラットフォーム技術ドキュメントのグローバルリターンコード説明を照会することにより、
40007
が不法なメディアファイルidを示すことがわかる.Step 2:取得テンポラリ素材インタフェースドキュメントを表示し、そのパラメータの説明から結果が見えないようです.パラメータ
必要かどうか
説明
access_token
はい
インタフェース証明書の呼び出し
media_id
はい
メディアファイルid
Step 3:バックエンド呼び出しのインタフェースに原因が見つからない以上、フロントエンド呼び出しの微信JS-SDK説明ドキュメントを引き続き表示します.画像インタフェースの下にアップロード画像インタフェースがあることが分かった.
wx.uploadImage({
localId:'', // ID, chooseImage
isShowProgressTips:1, // 1,
success:function (res) {
var serverId = res.serverId; // ID
}
});
上のインタフェースの
localId
の注釈から、またchooseImage
インタフェースを案内してくれました.このインタフェースのドキュメントの下に注釈があります.重要です.重点を置いて、後で話します.まず、このchooseImage
インタフェースを見てみましょう.wx.chooseImage({
count:1, // 9
sizeType:['original','compressed'], // ,
sourceType:['album','camera'], // ,
success:function (res) {
var localId = res.localIds; // id ,localId img src
}
});
uploadImage
インタフェースのこの注釈を見てみましょう.備考:アップロード画像の有効期間は3日間で、微信マルチメディアインタフェースで自分のサーバーに画像をダウンロードすることができます.ここで得られた
serverId
、media_id
です.これで全体の流れが比較的通じるようになり、フロントエンドはまず
chooseImage
インターフェースを呼び出してlocalIds
を取得し、次にuploadImage
インターフェースを呼び出し、パラメータlocalIds
を利用してserverId
を取得し、バックエンドは微信マルチメディアインターフェースを呼び出し、フロントエンドから入力されたパラメータserverId
を利用してアップロードされた画像を取得する.Step 4:こんなにくどくど言って、いったいどこが間違っているのか、まずフロントエンドから私に伝わったidがきっと微信が返したidであることを確定することができますが、さっきの分析から、idには2種類あることがわかります.1つはlocalId
であり、1つはserverId
である.では、フロントエンドがlocalId
をserverId
としてバックエンドに伝えた可能性があると推測します.Step 5:検査検証により、やはりそうです.上記の問題が発生した場合は、まずidのフォーマットをチェックする必要があります.以下は合法的なid形式:qedijYvbpoiuwn0UBeZLzM003kp4sjoeohc9epzNUhuKQLTBS-22EBlpghjio
、すなわちserverId
の形式である.localId
はあなたの携帯電話システムによって、Android
とiOS
の2種類に分けられ、それぞれの形式は:weixin://resourceid/d5b205e1c71994dcd39b6bb2045e201f
とwxLocalResource://564545039458235
です.リファレンスドキュメント