微信JS-SDK,facebook,whatsapp,messnger分享

一: 使用微信的js-sdk能夠實現分享功能,按照js-sdk文檔寫三個函數就好了:html

Wx.config({前端

});android

Wx.ready(function(){ios

});web

wx.error(function(){ajax

});json

代碼以下:api

this.$el.html(this.getXTemplate(this.contentTpl, self.pageData));服務器

    const tost = document.getElementById('tost');微信

    const center = document.getElementById('center');

    //點擊分享彈出框

    center.onclick = function(){

      tost.style = "display:block"

    };

    //點擊tost取消彈出框

    tost.onclick = function(){

      tost.style = "display:none"

    };

    //微信分享JS SDK開始

    const shareConfig={link:window.location.href};

    const shareurl = shareConfig.link;

    const sharelink = shareurl.split("?")[0];

    //alert(sharelink);

    $.ajax({

      url:'https://wechat.alisec.org/wechat/getWechatJsapiSign',

      data:{url:shareConfig.link},

      dataType:'json',

      success:function(data){

        alert('成功'+data);

        wx.config({

          debug:true,    //true 調試時候彈窗

          appId:data.data.appId,     //微信appid

          timestamp:data.data.timestamp,  //時間戳

          nonceStr:data.data.nonceStr,   //隨機字符串

          signature:data.data.signature,  //簽名

          jsApiList:[

            'onMenuShareTimeline',  //分享到朋友圈接口

            'onMenuShareAppMessage',//分享到朋友接口

            'onMenuShareQQ',        //分享到QQ接口

            'onMenuShareWeibo',     //分享到微博接口

            'onMenuShareQZone',     //分享到QQ空間

          ]

        });

        wx.ready(function(){

          //微信分享公共方法

          const shareData = {

            "imgUrl":'https://img.alicdn.com/tfs/TB1GoYjfnnI8KJjy0FfXXcdoVXa-117-116.jpg',  //分享顯示的縮略圖地址

            "link":`${sharelink}`,    //分享地址

            "desc":'這是一個空間',    //分享描述

            "title":'hello world',   //分享標題

            success: function () {

                // 用戶確認分享後執行的回調函數

                alert(111);

            },

            cancel: function () {

                // 用戶取消分享後執行的回調函數

                alert(222);

            }

          };

          //分享給朋友

          // wx.onMenuShareAppMessage({

          //   title:"hello world",

          //   desc:"這是一個空間",

          //   link:'http://qdm.pre.alibaba.com/core/preview/hd/hjptest.html',

          //   imgUrl:'https://img.alicdn.com/tfs/TB1GoYjfnnI8KJjy0FfXXcdoVXa-117-116.jpg',

          //   type:"",

          //   dataUrl:"",

          //   success: function () {

          //       // 用戶確認分享後執行的回調函數

          //       // alert(11111);

          //   },

          //   cancel: function () {

          //       // 用戶取消分享後執行的回調函數

          //       // alert(2222);

          //   }

          // })

          wx.onMenuShareTimeline (shareData);//分享到朋友圈

          wx.onMenuShareAppMessage (shareData);//分享到朋友

          wx.onMenuShareQQ (shareData);//分享到qq

          wx.onMenuShareWeibo (shareData);//分享到微博

          wx.onMenuShareQZone(shareData);//分享到qq空間

        });

        wx.error(function(res){

          // config信息驗證失敗會執行error函數,如簽名過時致使驗證失敗,  

          // 具體錯誤信息能夠打開configdebug模式查看,也能夠在返回的res參數中查看,  

          //對於SPA能夠在這裏更新簽名。  

          alert(JSON.stringify(res)); 

          alert("好像出錯了!!");

        });

      },error:function(data){

        console.log(data);

        alert(JSON.stringify(data));

      }

    });

    //微信分享結束

    //搖一搖開始

    var currentValue = {

      x : 0,

      y : 0,

      z : 0

    };

    //獲取手機晃動以後加速器的值,建立一個對象獲取 

    var lastValue = {

      x : 0,

      y : 0,

      z : 0

    };

    //設置晃動的最小的距離,只有達到該距離時,才執行搖一搖事件 

    var minValue = 20;

    //手機搖一搖事件

    window.ondevicemotion = function(e){

      var event1 = event || e;

      //獲取加速器對象,爲了獲取陀螺儀上的座標信息 

      var acceleration = event1.accelerationIncludingGravity;

      //記錄當前加速器的值 

      currentValue.x = acceleration.x;

      currentValue.y = acceleration.y;

      currentValue.z = acceleration.z;

      //判斷微信搖一搖事件(手機是否晃動) 

      if (Math.abs(currentValue.x - lastValue.x) >= minValue || Math.abs(currentValue.y - lastValue.y) > minValue || Math.abs(currentValue.z - lastValue.z) > minValue) {

        alert('搖一搖');

    };

    //記錄最後的值(保存上一次晃動事件中的加速器的值) 

     lastValue.x = currentValue.x; 

     lastValue.y = currentValue.y; 

     lastValue.z = currentValue.z; 

    }

    //搖一搖結束

 

二:之前作的分享:

傳參數再調用androidios的分享方法,

<#assign client_json = 「{shareType:'3',contentType:'${shareContentType_weibo}',title:'${shareTitle}',description:'${shareDesc}',bigLogo:'${shareImgUrl}',URL:'${shareUrl}',scene:'${scene}',extend:''}">

 adaptation:function(){

    //alert(this.isNewApp()+""+this.ua);

    if(this.isNewApp()!=true){

        var self=this;

        switch (this.system){

              case "android":

                this.loadScript(pub.oldAnd,function(){});

                break;

               case "ios":

                 this.loadScript(pub.oldIOS,function(){});

                 break;

                }

            }

        },

三:FaceBook的分享:

使用網頁分享meta標籤寫入分享的內容;facebook分享是是抓取頁面的代碼(注意是服務器返回的html代碼,由js操做後的html它們是抓不到的)。分享調試器輸入一個連接地址抓取是當前的頁面標籤不通過js渲染 ,若是想動態改變抓取的內容就須要服務端生成html

meta標籤:

<meta property="og:site_name" content="Facebook for Developers" />

    <meta property="og:title" content="how do you do" />

    <meta property="og:type" content="article" />

    <meta property="og:url" content="https://huodong.m.taobao.com/act/jptest2.html" />

    <meta property="og:image" content="https://img.alicdn.com/tfs/TB1KBEXih6I8KJjy0FgXXXXzVXa-300-300.jpg">

    <meta property="og:image" content="http://apcdn.qd.alibaba.com/head2.png">

    <meta property="og:locale" content="en_US" />

    <meta property="og:description" content="Download Alibaba Master to boost your phone and win Xiaomi 4A" /> 

服務端生成html前端配合
<meta property="og:site_name" content="Facebook for Developers" />

    <meta property="og:title" content="Hottest Way to Send New Year Wishes in 2018" />

    <meta property="og:type" content="article" />

    <meta property="og:locale" content="en_US" />

    <meta property="og:description" content="Listen to it now. I just recorded New Year Wishes for you." />

    <meta property="og:image" content="${og:image}" />

    <meta property="og:image:width" content="800" />

    <meta property="og:image:height" content="421" />

 

Facebook js分享
首先先引入fbsdk

<div id="fb-root"></div>

    <script>(function(d, s, id) {

      var js, fjs = d.getElementsByTagName(s)[0];

      if (d.getElementById(id)) return;

      js = d.createElement(s); js.id = id;

      //下面填入一個你的app id,若是還沒,請在fb開發者平臺註冊一個

      js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8&appId={your app id}"; 

      fjs.parentNode.insertBefore(js, fjs);

    }(document, 'script', 'facebook-jssdk'));</script>

 

觸發事件進行分享示例:

var shareToFbBtn = document.getElementById('fb-btn');

shareToFbBtn.onclick = function(){

  FB.ui({

    method: 'share',

     href: "htttp://www.eaxmple.com/share.html" //這裏換成你的網址

  }, function(response){

    //分享回調

  })

};

總結

第一種就是微信分享比較特殊調用微信接口;這其實仍是沒作到分享。

第二種本身寫方法調用原生的各個分享方法,

第三種facebook網頁分享直接頁面抓取很方便,若是想js分享需求appid androidios客戶端分享都須要集成facebooksdk

 

參考網址:http://www.jianshu.com/p/961378513e59

相關文章
相關標籤/搜索