Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Methode zum Implementieren benutzerdefinierter Freigabeinhalte für öffentliche WeChat-Konten

PHP-Methode zum Implementieren benutzerdefinierter Freigabeinhalte für öffentliche WeChat-Konten

墨辰丷
墨辰丷Original
2018-06-01 10:44:383605Durchsuche

In diesem Artikel wird hauptsächlich die Implementierungsmethode des benutzerdefinierten Teilens von Inhalten des öffentlichen WeChat-Kontos in der PHP-Version vorgestellt. Er analysiert den Schnittstellenaufruf und die damit verbundenen Verwendungsfähigkeiten von PHP, um benutzerdefinierten Inhalt des öffentlichen WeChat-Kontos in Form von Beispielen zu implementieren kann darauf verweisen

Das offizielle WeChat-Konto kann benutzerdefinierte Freigabeinhalte über die API-Schnittstelle auf dem Mobiltelefon realisieren. Werfen wir einen Blick auf die Implementierungsschritte dieser Schnittstelle.

1. Vorbereitungsphase

Ein offizielles Konto und eine Microsite.

2. Melden Sie sich zuerst beim WeChat an öffentliche Plattform und geben Sie die „Offiziellen Kontoeinstellungen“ ein. Geben Sie in den „Funktionseinstellungen“ den „JS-Schnittstellensicherheitsdomänennamen“ ein. Hinweis: Nach dem Anmelden können Sie die entsprechenden Schnittstellenberechtigungen im „Entwickler“-Bereich einsehen Center".

3. Code

<?php
//curl获取请求文本内容
function get_curl_contents($url, $method =&#39;GET&#39;, $data = array()) {
  if ($method == &#39;POST&#39;) {
    //使用crul模拟
    $ch = curl_init();
    //禁用htt<a href="/fw/photo.html" target="_blank">ps</a>
    <a href="/tags.php/curl_setopt/" target="_blank">curl_setopt</a>($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    //允许请求以文件流的形式返回
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_URL, $url);
    $result = curl_exec($ch); //执行发送
    curl_close($ch);
  }else {
    if (ini_get(&#39;allow_<a href="/tags.php/fopen/" target="_blank">fopen</a>_url&#39;) == &#39;1&#39;) {
      $result = file_get_contents($url);
    }else {
      //使用crul模拟
      $ch = curl_init();
      //允许请求以文件流的形式返回
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
      //禁用https
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt($ch, CURLOPT_URL, $url);
      $result = curl_exec($ch); //执行发送
      curl_close($ch);
    }
  }
  return $result;
}
//获取微信公从号access_token
function wx_get_token() {
  $AppID = &#39;1235464654&#39;;//AppID(应用ID)
  $AppSecret = &#39;705641465sdfasdf456465a4sdf&#39;;//AppSecret(应用密钥)
  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39;.$AppID.&#39;&secret=&#39;.$AppSecret;
  $res = get_curl_contents($url);
  $res = json_decode($res, true);
  //这里应该把access_token缓存起来,至于要怎么缓存就看各位了,有效期是7200s
  return $res[&#39;access_token&#39;];
}
//获取微信公从号ticket
function wx_get_jsapi_ticket() {
  $url = sprintf("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi", wx_get_token());
  $res = get_curl_contents($url);
  $res = json_decode($res, true);
  //这里应该把access_token缓存起来,至于要怎么缓存就看各位了,有效期是7200s
  return $res[&#39;ticket&#39;];
}
$wx = array();
//生成签名的时间戳
$wx[&#39;timestamp&#39;] = time();
//生成签名的随机串
$wx[&#39;noncestr&#39;] = &#39;Wm3WZYTPz0wzccnW&#39;;
//jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。
$wx[&#39;jsapi_ticket&#39;] = wx_get_jsapi_ticket();
//分享的地址,注意:这里是指当前网页的URL,不包含#及其后面部分,曾经的我就在这里被坑了,所以小伙伴们要小心了
$wx[&#39;url&#39;] = &#39;http://www.baidu.com&#39;;
$string = sprintf("jsapi_ticket=%s&noncestr=%s&timestamp=%s&url=%s", $wx[&#39;jsapi_ticket&#39;], $wx[&#39;noncestr&#39;], $wx[&#39;timestamp&#39;], $wx[&#39;url&#39;]);
//生成签名
$wx[&#39;signature&#39;] = sha1($string);
/*
注意事项
签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
签名用的url必须是调用JS接口页面的完整URL。
出于安全考虑,开发者必须在服务器端实现签名的逻辑。
*/
?>

4. Anzeige anzeigen

Fügen Sie die folgende JS-Datei in die Seite ein, die die JS-Schnittstelle aufrufen muss, unterstützen Sie https: http://res.wx.qq.com/open/js/jweixin-1.0.0.js

und injizieren Sie sie Berechtigungsüberprüfung über die Konfigurationsschnittstelle.

<script>
//通过config接口注入权限验证配置
wx.config({
  debug : false,
  appId : &#39;AppID&#39;,
  timestamp : &#39;<?php echo $wx["timestamp"];?>&#39;,
  nonceStr : &#39;<?php echo $wx["noncestr"];?>&#39;,
  signature : &#39;<?php echo $wx["signature"];?>&#39;,
  jsApiList : [&#39;onMenuShareTimeline&#39;, &#39;onMenuShareAppMessage&#39;, &#39;onMenuShareQQ&#39;, &#39;onMenuShareWeibo&#39;]
});
wx.ready(function(){
  var
    s_title = &#39;分享标题&#39;,  // 分享标题
    s_link = &#39;分享链接&#39;,  // 分享链接
    s_desc = &#39;分享描述&#39;,  //分享描述
    s_imgUrl = &#39;分享图片&#39;; // 分享图标
  //朋友圈
  wx.onMenuShareTimeline({
    title: s_title, // 分享标题
    link: s_link, // 分享链接
    imgUrl: s_imgUrl, // 分享图标
    success: function () { },
    cancel: function () { }
  });
  //发送给好友
  wx.onMenuShareAppMessage({
    title: s_title, // 分享标题
    desc: s_desc, // 分享描述
    link: s_link, // 分享链接
    imgUrl: s_imgUrl, // 分享图标
    type: &#39;&#39;, // 分享类型,music、video或link,不填默认为link
    dataUrl: &#39;&#39;, // 如果type是music或video,则要提供数据链接,默认为空
    success: function () {},
    cancel: function () {}
  });
  //QQ好友
  wx.onMenuShareQQ({
    title: s_title, // 分享标题
    desc: s_desc, // 分享描述
    link: s_link, // 分享链接
    imgUrl: s_imgUrl, // 分享图标
    success: function () { },
    cancel: function () { }
  });
  //腾讯微博
  wx.onMenuShareWeibo({
    title: s_title, // 分享标题
    desc: s_desc, // 分享描述
    link: s_link, // 分享链接
    imgUrl: s_imgUrl, // 分享图标
    success: function () { },
    cancel: function () { }
  });
});
</script>

Fertig

Der grundlegende Prozess ist wie folgt Ein schwierigerer Punkt ist die Generierung. Achten Sie einfach auf die Signatur.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.

Verwandte Empfehlungen:

Lösung für das Problem der Speichererschöpfung, wenn PHP große Datenmengen abfragt

php
+Instanz von Mongodb, die beurteilt, ob die Koordinaten innerhalb des angegebenen Polygonbereichs liegen

Einige Punkte, die bei der Definition des Befehlsraums in PHP zu beachten sind


Das obige ist der detaillierte Inhalt vonPHP-Methode zum Implementieren benutzerdefinierter Freigabeinhalte für öffentliche WeChat-Konten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn