国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ WeChat アプレット WeChatの開(kāi)発 PHP WeChat共有開(kāi)発の詳細(xì)説明

PHP WeChat共有開(kāi)発の詳細(xì)説明

Jan 16, 2017 pm 02:00 PM

PHP WeChat 開(kāi)発の経験を共有します。場(chǎng)合によっては、プロジェクトやプロジェクトを WeChat で共有してから一連のイベントを?qū)g行する必要がある場(chǎng)合、WeChat 共有アクションを取得する必要があります。これは、現(xiàn)在行われていることがすでにわかっていることを意味します。共有する場(chǎng)合、明らかに WeChat のデフォルトの共有を使用することはできません。ユーザーが共有するときは、當(dāng)社の所定の手順に従って、共有後の操作を簡(jiǎn)単に実行できるようにする必要があります。

ページ?jìng)?cè)には主に次のような js があります:

<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
 
<script>
wx.config({
   debug: false, // 開(kāi)啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來(lái),若要查看傳入的參數(shù),可以在pc端打開(kāi),參數(shù)信息會(huì)通過(guò)log打出,僅在pc端時(shí)才會(huì)打印。
   appId: &#39;{$appid}&#39;, // 必填,公眾號(hào)的唯一標(biāo)識(shí)
   timestamp:{$timestamp} , // 必填,生成簽名的時(shí)間戳
   nonceStr: &#39;{$nonceStr}&#39;, // 必填,生成簽名的隨機(jī)串
   signature: &#39;{$signature}&#39;,// 必填,簽名,見(jiàn)附錄1
   jsApiList: [&#39;onMenuShareAppMessage&#39;,&#39;onMenuShareTimeline&#39;] // 必填,需要使用的JS接口列表,所有JS接口列表見(jiàn)附錄2
 });
 
 wx.ready(function(){
  //分享給朋友
  wx.onMenuShareAppMessage({
    title: {$title}, // 分享標(biāo)題 此處$title可在控制器端傳遞也可在頁(yè)面?zhèn)鬟f 頁(yè)面?zhèn)鬟f講解在下面哦
    desc: {$desc}, //分享描述
    link: {$link}, // 分享鏈接
    imgUrl: {$imgurl}, // 分享圖標(biāo)
    type: &#39;&#39;, // 分享類型,music、video或link,不填默認(rèn)為link
    dataUrl: &#39;&#39;, // 如果type是music或video,則要提供數(shù)據(jù)鏈接,默認(rèn)為空
    success: function () {
       alert(&#39;分享成功&#39;);
    },
    cancel: function () {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
      // alert(&#39;取消分享&#39;);
    }
  });
  //分享到朋友圈
   wx.onMenuShareTimeline({
    title: {$title}, // 分享標(biāo)題
    desc: {$desc}, // 分享描述
    link: {$link}, // 分享鏈接
    imgUrl: {$imgurl}, // 分享圖標(biāo)
    success: function () {
      // 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
    },
    cancel: function () {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
    }
  });
 });
 
</script>

wx.config が設(shè)定されると、プログラムは次の共有に進(jìn)みます。ここで、デバッグ用に false を true に変更できます。そうでない場(chǎng)合は、ここで true に変更してもポップアップ効果はありません。appId、timestamp、nonceStr、signature の 4 つのパラメーターが必要です。コントローラーのコードは次のとおりです:

<?php
 
$jssdk = new \Home\Util\JSSDK(C(&#39;APPID&#39;), C(&#39;SECRET&#39;));//此處C里面的東西為你所使用的公眾號(hào)的appid和secret,這倆個(gè)東西可在微信公眾平臺(tái)獲取到 不詳細(xì)解釋 找不到追加評(píng)論(講解) JSSDK文件代碼在下
$signPackage = $jssdk->GetSignPackage();
 
$this->assign(&#39;appid&#39;,$signPackage["appId"]);
$this->assign(&#39;timestamp&#39;,$signPackage["timestamp"]);
$this->assign(&#39;nonceStr&#39;,$signPackage["nonceStr"]);
 $this->assign(&#39;signature&#39;,$signPackage["signature"]);

ここで設(shè)定します。 wx.config の後に、タイトルやその他の情報(bào)を追加することもできます。

$this->assign('title',$title);

JSSDK ファイルコード:

<?php
namespace Home\Util;
use Think\Controller;
class JSSDK{
 private $appId;
 private $appSecret;
 public function __construct($appId, $appSecret) {
  $this->appId = $appId;
  $this->appSecret = $appSecret;
 }
 public function getSignPackage() {
  $jsapiTicket = $this->getJsApiTicket();
  // 注意 URL 一定要?jiǎng)討B(tài)獲取,不能 hardcode.
  $protocol = (!empty($_SERVER[&#39;HTTPS&#39;]) && $_SERVER[&#39;HTTPS&#39;] !== &#39;off&#39; || $_SERVER[&#39;SERVER_PORT&#39;] == 443) ? "https://" : "http://";
  $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
  $timestamp = time();
  $nonceStr = $this->createNonceStr();
  // 這里參數(shù)的順序要按照 key 值 ASCII 碼升序排序
  $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
  $signature = sha1($string);
  $signPackage = array(
   "appId"   => $this->appId,
   "nonceStr" => $nonceStr,
   "timestamp" => $timestamp,
   "url"    => $url,
   "signature" => $signature,
   "rawString" => $string
  );
  return $signPackage;
 }
 private function createNonceStr($length = 16) {
  $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  $str = "";
  for ($i = 0; $i < $length; $i++) {
   $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
  }
  return $str;
 }
 public function getJsApiTicket() {
  // jsapi_ticket 應(yīng)該全局存儲(chǔ)與更新,以下代碼以寫入到文件中做示例
  $data = json_decode($this->get_php_file("jsapi_ticket.php"));
  if ($data->expire_time < time()) {
   $accessToken = $this->getAccessToken();  
   // 如果是企業(yè)號(hào)用以下 URL 獲取 ticket
   // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
   $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$accessToken&type=jsapi";
   $res = json_decode($this->httpGet($url));
   $ticket = $res->ticket;
   // var_dump($url);
   if ($ticket) {
    $data->expire_time = time() + 7000;
    $data->jsapi_ticket = $ticket;
    $this->set_php_file("jsapi_ticket.php", json_encode($data));
   }
  } else {
   $ticket = $data->jsapi_ticket;
  }
  return $ticket;
 }
 public function getAccessToken() {
  // access_token 應(yīng)該全局存儲(chǔ)與更新,以下代碼以寫入到文件中做示例
  $data = json_decode($this->get_php_file("access_token.php")); 
  if ($data->expire_time < time()) {
   // 如果是企業(yè)號(hào)用以下URL獲取access_token
   // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
   $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
   $res = $this->getJson($url);
   $access_token = $res[&#39;access_token&#39;];
   // var_dump($res);
   if ($access_token) {
    $data->expire_time = time() + 7000;
    $data->access_token = $access_token;
    $this->set_php_file("access_token.php", json_encode($data));
   }
  } else {
   $access_token = $data->access_token;
  }
  return $access_token;
  // $aa = $access_token;
  // var_dump($aa);
 }
 //獲取access_token
 public function getJson($url){
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $output = curl_exec($ch);
   curl_close($ch);
   // var_dump(json_decode($output, true));
   return json_decode($output, true);
 }
 //獲取ticket
 private function httpGet($url) {
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  // curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  // 為保證第三方服務(wù)器與微信服務(wù)器之間數(shù)據(jù)傳輸?shù)陌踩裕形⑿沤涌诓捎胔ttps方式調(diào)用,必須使用下面2行代碼打開(kāi)ssl安全校驗(yàn)。
  // 如果在部署過(guò)程中代碼在此處驗(yàn)證失敗,請(qǐng)到 http://curl.haxx.se/ca/cacert.pem 下載新的證書判別文件。
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  $res = curl_exec($curl);
  // var_dump($res);
  curl_close($curl);  
  return $res;
 }
 private function get_php_file($filename) {
  return trim(substr(file_get_contents($filename), 15));
  // echo trim(substr(file_get_contents($filename), 15));die;
  // $aa = trim(substr(file_get_contents($filename), 15));
 }
 private function set_php_file($filename, $content) {
  $fp = fopen($filename, "w");
  fwrite($fp, "<?php exit();?>" . $content);
  fclose($fp);
 }
}

WeChat で共有する これは段落ですが、欠陥があります。つまり、ページ情報(bào) wx.config を設(shè)定した後、どうすればよいでしょうか。 $title? などの変數(shù)情報(bào)を突然再割り當(dāng)てしたい場(chǎng)合があります。

次のようなメソッドで共有を記述できます(大まかなコード):

<script>
var zl= function (title,link,imgurl,desc){
 wx.ready(function(){
  //分享給朋友
  wx.onMenuShareAppMessage({
    title: title, // 分享標(biāo)題
    desc: desc, //分享描述
    link: link, // 分享鏈接
    imgUrl: imgurl, // 分享圖標(biāo)
    type: &#39;&#39;, // 分享類型,music、video或link,不填默認(rèn)為link
    dataUrl: &#39;&#39;, // 如果type是music或video,則要提供數(shù)據(jù)鏈接,默認(rèn)為空
    success: function () {
       alert(&#39;分享成功&#39;);
    },
    cancel: function () {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
      // alert(&#39;取消分享&#39;);
    }
  });
  //分享到朋友圈
   wx.onMenuShareTimeline({
    title: title, // 分享標(biāo)題
    desc: desc, // 分享描述
    link: link, // 分享鏈接
    imgUrl: imgurl, // 分享圖標(biāo)
    success: function () {
      // 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
    },
    cancel: function () {
      // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
      // alert(&#39;已取消分享&#39;);
    }
  });
 });
};
</script>

説明します。コントローラーからページに入ると、既に共有にタイトルとその他の情報(bào)が設(shè)定されています。次に、それを設(shè)定した後、再実行します。ページにタイトルの値を入力すると、次のような方法になります

<script>
zl(title,link,imgurl,desc);
</script>

WeChat のその他の機(jī)能について詳しく知りたい場(chǎng)合は、マニュアルを參照してください

。

以上がこの記事の全內(nèi)容です。皆様のお役に立つことを願(yuàn)っております。ぜひ PHP 中國(guó)語(yǔ) Web サイトをご利用ください。

PHP WeChat の共??有と開(kāi)発の詳細(xì)に関連するその他の記事については、PHP 中國(guó)語(yǔ) Web サイトに注目してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)