>  기사  >  백엔드 개발  >  PHP WeChat 브라우저 공유 설정 및 콜백 세부정보_php 예

PHP WeChat 브라우저 공유 설정 및 콜백 세부정보_php 예

WBOY
WBOY원래의
2016-08-17 13:02:35824검색

WeChat에서 친구에게 공유/모멘트에 공유하는 기능은 비교적 일반적이어야 합니다. 예를 들어 모멘트에 공유하면 공유된 콘텐츠가 작은 사진 + 간단한 형식으로 친구에게 표시됩니다. 이렇게 하면 이 작은 사진과 이 작은 소개가 공유 콘텐츠의 클릭률의 최우선 순위가 됩니다. 기본적으로 이 이미지는 콘텐츠 주제 섹션의 첫 번째 큰 이미지로 로드되지만 소개는 URL만 로드됩니다. 이런 종류의 표시 방법은 아직 상당히 만족스럽지 못하므로 이러한 내용이 어떻게 설정되어 있는지 살펴보겠습니다. PHP를 예로 들어 보겠습니다.

먼저 공개 계정이 있어야 하며 appid와 appsecret을 얻어야 합니다.

그러면 appid와 appsecret을 통해 WeChat 플랫폼에서 access_token을 교환할 수 있습니다.

define("APPID", $appid);
define("APPSECRET", $appsecret);
 
// 获取access_token
$token_access_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . APPID . "&secret=" . APPSECRET;
$res = file_get_contents($token_access_url); //获取文件内容或获取网络请求的内容
$result = json_decode($res, true); //接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
$access_token = $result['access_token'];

access_token을 통해 WeChat 플랫폼에서 jsapi_ticket을 요청할 수 있습니다.

 // 获取jsapi_ticket
$ticket_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=TOKEN";

$res = file_get_contents($ticket_url); //获取文件内容或获取网络请求的内容
$result = json_decode($res, true); //接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
$ticket = $result['ticket']; 

자, 모든 것이 준비되었습니다. 설정을 시작해 보겠습니다.

WeChat 공유 설정은 wx.config를 통해 설정됩니다.

<script>
wx.config({
  debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  appId: '<&#63;php echo APPID;&#63;>', // 必填,公众号的唯一标识
  timestamp: <&#63;php echo $timestamp;&#63;>, // 必填,生成签名的时间戳
  nonceStr: '<&#63;php echo $noncestr;&#63;>', // 必填,生成签名的随机串
  signature: '<&#63;php echo $signature;&#63;>',// 必填,签名
  jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage'] // 必填,需要使用的JS接口列表
});
</script>

가운데 appid는 WeChat 공식 계정의 appid이고, timestamp는 현재 타임스탬프이고, noncestr은 서명을 생성하는 데 사용되는 임의의 문자열이고, 서명은 생성된 서명이고, jsapilist는 우리가 사용해야 하는 WeChat 인터페이스입니다. 따라서 친구에게 공유하는 것과 Moments에 공유하는 두 가지 인터페이스를 사용할 수 있습니다.

타임스탬프, noncestr 및 서명 생성 과정을 간략하게 나열:

// 生成签名
 // 生成随机字符串
class RandChar{
 function getRandChar($length){
  $str = null;
  $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
  $max = strlen($strPol)-1;

  for($i=0;$i<$length;$i++){
  $str.=$strPol[rand(0,$max)];//rand($min,$max)生成介于min和max两个数之间的一个随机整数
  }
  return $str;
 }
}
$randCharObj = new RandChar();
$noncestr = $randCharObj->getRandChar(16);


$timestamp = time();
if ($_SERVER['QUERY_STRING']){
  $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'&#63;'.$_SERVER['QUERY_STRING'];
}else{
  $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
}

$parameters = array("noncestr" => $noncestr,
            "jsapi_ticket" => $ticket,
            "timestamp" => $timestamp,
            "url" => $url);
ksort($parameters);

$string1 = "";
foreach ($parameters as $key => $val){
  $string1 .= $key."=".$val."&";
}
$string1 = substr($string1,0,-1);
$signature = sha1($string1);

이제 wx.config 구성이 완료되었습니다. 다음으로 방금 언급한 작은 그림과 소개 내용을 자유롭게 설정할 수 있습니다.

  wx.ready(function(){
    // 分享到朋友圈设置
    wx.onMenuShareTimeline({
      title: '测试标题', // 分享标题
      link: 'http://www.baidu.com', // 分享链接
      imgUrl: 'http://mp.weixin.qq.com/wiki/static/assets/dc5de672083b2ec495408b00b96c9aab.png', // 分享图标
      success: function () { 
        alert("分享成功");
      },
      cancel: function () { 
        alert("分享失败");
      }
    });
    // 分享给好友
    wx.onMenuShareAppMessage({
      title: '测试标题', // 分享标题
      desc: '测试分享描述', // 分享描述
      link: 'http://www.baidu.com', // 分享链接
      imgUrl: 'http://mp.weixin.qq.com/wiki/static/assets/dc5de672083b2ec495408b00b96c9aab.png', // 分享图标
      type: '', // 分享类型,music、video或link,不填默认为link
      dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
      success: function () { 
        alert("分享成功");
      },
      cancel: function () { 
        alert("分享失败");
      }
    });
  })

중간에 ​​​success 및 cancel 값은 각각 성공적인 공유 후의 js 콜백과 공유 취소 후의 콜백을 나타내는 데 매우 일반적으로 사용됩니다. 사용자가 친구들과 공유한 후에도 클래스의 작은 기능은 여전히 ​​매우 유용합니다.

위 글의 내용은 모두의 공부에 도움이 되길 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.