プログラムコード生成機能ネットワーククラウド要求(リクエストネットワークのNode.jsとアプレットマイクロチャネル参照小雲開発

参照してアプレットコード生成プロセス
1は、クラウド機能に二次元コードを生成するために必要なアプレットクライアントのアップロードパラメータ
2、及びクラウドAPPID appsecret要求機能は、access_tokenは使用
。3、クラウドaccess_tokenはを+アプレット関数は、2つの次元を生成するクライアントのアップロードパラメータを使用しますコード
4、生成された2Dクラウド機能コードがピック側アプレットファイルIDのために、アプレットの終わりに戻す(またはデータベースファイルIDに戻され、その後、データベースを検索するために生成され、データベースの生成動作を繰り返し小さな防ぐ発生、再び実行されませんプログラムコードファイル)

アプレットクライアントアップロードアプレットコードパラメータ必要
  wx.cloud.callFunction({
  名:「のgetImage」、//関数名のクラウド
  データ:{//アプレットコードパラメータに必要な
    ページ:「ページ/ XXXX / XXXX 」
    ID:ID、
  }、
  完了:RES => {
    にconsole.log( 'CallFunction試験結果:'、RES)
    this.setData({//取得戻るアプレットコード
      xcxCodeImageData:res.result、
    })
  }
})

APPID appsecret access_tokenは要求と雲と機能
のクラウド機能のgetImageを作成するために、クラウドディレクトリインポート要求、要求、約束、axiosフレーム(データの要求)に対応する機能、
NPMは、インストール--save //リクエスト要求フレーム
NPMがインストール-リクエスト-約束//要求フレーム約束スタイルの保存
NPM --save axios //要求データフレームをインストールして、データ型を、フローはstream` `に戻すことができます
#注:インストールには、私と略記することができ、効果を保存package.jsonライブラリに追加することで

、クラウドファイルインポート機能フレームの
インクルードは、クラウド=(「WX-サーバー-SDK」)必要がconstとして
のconst = Axios必要(「Axios」)
VARを=(「要求約束」)RPを必要と
CONSTザは、FS =(「FS」)を必要とする。
VAR =ストリームを必要とする(「ストリーム」);
#は、実際の実際の使用に応じて、以下のような適切な導入、導入することが全てである必要はない

access_tokenは取得要求
//を要求フレームスタイル約束の
RP( 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=secret=appSecret'
   .then(機能(resultValue){
     はconsole.log( "要求成功:" )
     にconsole.log(JSON.parse(resultValue))
   })
   .catch(関数(ERR){});
  });

// Nodejs原生写法
のconstのhttp =が必要です( "HTTPS") 
のconst URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=secret=appSecret" 
http.get(URL、 (RES)=> {
  VARのresultValue = ""
  res.on( "データ"(データ)=> {
     resultValue + =データ
     })
    res.on( "終了"、()=> {
      にconsole.log(resultValue)
    } )
  })( "エラー"、(E)=> {上。
    はconsole.log( `获取数据失败:$ {} e.message`)
})

获取小程序码
 するvarオプション= {
 方法: 'POST'、
 URL : 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + access_tokenは」、
  ボディ:{
    ページ: "ページ/ XXX / XXX
    シーン: "ID = XXX"
  }、
    JSON:trueに
 };
    RP(オプション)
      .then(関数(parsedBody){
      にconsole.log(parsedBody)//アプレットコード画像データ
 })
 .catch(関数(ERR){});

サーバ完全なコード
VaRのRP =( '要求-約束')を必要とする
CONSTザは、FS =( 'FS')を必要とする。
VAR =ストリームを必要とする( 'ストリーム')。

//请求微信access_tokenは
    RP( 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=secret')
.then(機能(resultValue){
はconsole.log( "请求成功:」+ resultValue)
はconsole.log(JSON.parse(resultValue).access_token)

//请求小程序码
VARのhttp =( "HTTP")が必要です、
データ= {
    //小程序码参数
    "ページ": "ページ/ CardDetail / CardDetail"、
    "幅":300、
    "シーン":「ID = W6MIjlJhFW5Pec-Y」、
};
データ= JSON.stringify(データ)。
VARオプション= {
      方法: "POST"、
      ホスト: "api.weixin.qq.com"、
      パス"/?WXA / getwxacodeunlimit access_tokenは=" + JSON.parse(resultValue).access_token、
      ヘッダー:{
         「コンテンツタイプ「: "アプリケーション/ JSON"、
         "コンテンツ長":data.length
      }
  }。
  VaRのREQ = http.request(オプション、
      関数(RES){ res.setEncoding( "バイナリ")。
      VAR imgData = '';
      res.on( 'データ'、関数(チャンク){
        imgDataチャンク+ =;
    });
      res.on( "終了"、関数(){
        
        画像データが所望uploadFileメソッドパラメータファイル含むFileContentに変換され戻す//ストリーム形式、およびローカル通常の出力データは、この方法を有する2つの使用方法アプレットコードを実行しようとuploadFile取得することができる
        VARをbufferStream新しい新しいstream.PassThrough =();
        bufferStream.end(新しい新しいバッファ(imgData));
        コンソール。ログ(「要求流量プロファイルuploadFile方式含むFileContent ----」)
        はconsole.log(bufferStream)
        
        テキストに//崇高出力をローカルで実行することができ、二次元コード開くこと
        //ローカルストレージパス
        VARパス=「公開。/ '+ Date.now()+' PNG「;
        fs.writeFile(パス、imgData、 "バイナリ"、関数(ERR){
          (ERR IF){
            にconsole.log( "ダウン)「失敗;
        }
        console.log( "ダウン成功");
    });
    });
  });
  req.write(データ);
  req.end();
  })
.catch(関数(ERR){});

サーバ2つの完全なコード(直接使用することができるペースト)
constが必要クラウド( 'WX-サーバーSDK')=
CONST = Axios必要とする( 'Axiosを')
;必要RP =( '要求-約束')VAR
cloud.init()

//云函数入口函数
exports.main =非同期(イベント、コンテキスト)=> {
  にconsole.log(イベント)
  試す{
CONST resultValueは= https://api.weixin.qq.com/cgi-bin/ '(RPを待ちます?トークンgrant_type = client_credential&APPID = APPID&秘密=秘密')
constのトークン= JSON.parse(resultValue).access_token。
console.log( '------ TOKEN:'、トークン)。

CONST応答は=({axiosを待つ
  'ポスト':方法
  URL: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit'、
  responseType: 'ストリーム'、
  paramsは:{
    access_tokenは:トークン、
  }、
  データ。 {
    ページ:event.page、
    幅:300、
    シーン: "ID =" + event.id、
  }
})。

awaitリターンcloud.uploadFile({
  cloudPath 'xcxcodeimages /' + Date.now()+ '.pngを'
  含むFileContent:response.data、
});
  }キャッチ(ERR){
にconsole.log(「>>>>> > ERROR:」、ERR)
  }
}
要求フレーム関連文書:HTTPS://www.npmjs.com/package/request
要求フレームの約束のスタイル関連文書:HTTPS://www.npmjs.com/package/request-promise
Axiosフレームワーク関連書類ます。https://www.npmjs.com/package/axios
アプレットクラウド開発文書:HTTPS://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html
- ------------------- 
著者:技術のブログStevinの 
ソース:CSDNの 
元ます。https://blog.csdn.net/feng2qing/article/details/82914505 
著作権:この記事では、ブロガーのオリジナルの記事、再現され、ボーエンのリンクを添付してください!

おすすめ

転載: blog.csdn.net/qq_36935391/article/details/89398593