Кстати, приложения обычно имеют входы, чтобы поделиться на социальных платформах, а также есть хорошая основа для обмена веб -страницами. Тем не менее, с непрерывной разработкой HTML5 мобильные веб -страницы становятся все более популярными в нашей жизни. Так как же завершить обмен на наши мобильные телефоны? Говоря об этом, у крупных платформ обмена есть SDK для Android и iOS. Как разработчики, нам нужно только интегрировать SDK в наш проект. Через предоставленный внешний интерфейс мы можем легко выполнить функцию совместного использования; Что касается веб -страниц, в Интернете есть много отличных средств обмена, таких как: обмен BSHARE и обмен JiaThis; Мы можем легко интегрироваться в наш проект; Но нам нужно приложить некоторые усилия по реализации обмена на мобильных веб -страницах. Я думаю, что в настоящее время мы можем поделиться, позвонив по клиенту, установленному пользователем. Что нужно упомянуть здесь, так это обмен WeChat. Когда мы делимся на веб -странице, обычно появляется общий QR -код. Мы используем приложение WeChat для сканирования и обмена. Мы не можем работать на мобильном телефоне. Нам нужно напрямую открыть приложение, чтобы поделиться, когда пользователь выбирает общий доступ. Здесь мы будем жаловаться на WeChat Caring JS SDK. Когда я впервые вступил в контакт с этой штукой, я подумал, что, пока я завершил операцию, я мог бы осознать обмен пользовательскими. Со всеми видами подводных камней я наконец обнаружил, что WeChat JS SDK только временно кэширует наш пользовательский контент. Когда нам нужно поделиться, нам все еще нужно завершить операцию через кнопку в верхнем правом углу WeChat. Хорошо, я больше не буду говорить по глупости. Давайте введем сегодняшнюю тему. Затем я завершу совместное использование Sina, QQ, QQ Space и Tencent Weibo через гиперссылки, а затем предоставят вам подписанную логику компонента SDK WeChat JS SDK на основе платформы C# и, наконец, приведет вас к завершению обмена мобильной сети.
Введите первое пункт: полная обмена через гиперссылку
Для широко используемых социальных платформ мы можем в основном делиться контентом через гиперссылки, за исключением WeChat, который не поддерживает этот метод обмена. Этот метод обмена может облегчить нам настройку обмена и очень удобен в использовании.
function sharesina () {// поделиться в Sina weibo var sharesinastring = 'http://service.weibo.com/share/share.php?title=' + $ ("#title"). val () + '& url =' + $ ("#url"). valce.location.href = varesinastring; {url: location.href, showcount: '0',/*, независимо от того, отображается ли общее количество акций, отображение: '1', не отображение: '0'*/desc: '',/*Причина обмена по умолчанию (необязательно)*/summary: '',/*share summary (необязательно)*/title: '',/*share teit (Необязательно)*/PICS: '',/*PATH to Come Pictures (необязательно)*/style: '203', ширина: 98, высота: 22}; // поделиться в QQ Space var sharesinastring = 'http://sns.qzone.qq.com/cgi/qzshare/cgi_qzhare_oneke? '& url =' + $ ("#url"). val () + '& site = "manyi.com"'; window.location.href = sharesinastring;} function shareQq () {var p = {url: location.href, /*получить URL, вы можете добавить из обмена на логику QQ для удобной статистики* /descess '', /*( /*Совместно ( /*Sale Sale Saleps Support Scents Saleps Surdeps) Salips Sales Saleps Saleps Saleps Sales) ( /*( /*( /*( /*Sale Share Saleps Saleps Sarting) ( /*( /*( /*Share Sale Sarts Saleps Saleps Sarting). Несколько языков обмена (использование | разделение)*/title: '',/*Обмен заголовок (необязательно)*/Сводка: '',/*Share Summary (необязательно)*/pics: '',/*Поделиться картинкой (необязательно)*/flash: '',/*Видеоадряж (необязательно)*/сайт: 'manyi.com',/*share (опциозно 32}; // Поделиться с QQVAR sharesInastring = 'http://connect.qq.com/widget/shareqq/index.html?title=' + $ ("#title"). Val () + '& summary =' + $ ("#url"). Val () + '& url =' + $ (#url "). '& site = "manyi.com"'; window.location.href = sharesinastring;} function shareQqweibo () {var p = {url: location.href, /*Получить URL и добавить логотип общего QQ из QQ, чтобы облегчить статистику* /title: '', /*share title (опцион)* /pic: ', /** /*Share Source (необязательно) Например: обмен QQ*/}; // Поделиться с Tencent weibo var shareSinastring = 'http://vtqq.com/share/share.php?title=' + $ ("#title"). Val () + '& url =' + $ ("#url). areSinastring;}Вышеуказанное коды JS для обмена Sina Weibo, QQ, QQ Space и Tencent Weibo. Нам нужно только позвонить им в то место, где необходимо обмениваться страницей. Конечно, есть много платформ, которые также поддерживают эту форму обмена контентом. Пожалуйста, изучите это сами. Мы не будем уточнять его здесь один за другим.
Вот некоторые акции WeChat:
Вначале мы сказали, что встроенный браузер WeChat имеет функцию совместного использования в правом верхнем углу, что также делает невозможным для нас поделиться непосредственно на наших веб-страницах с кругом друзей Вейчата. WeChat предоставляет нам JS SDK для обычного обмена WeChat. Вы не можете сдержать свою страсть? Давайте кратко рассмотрим, что это за JS SDK? Документы, предоставленные WeChat, в то время довольно подробно, но если вы хотите разработать JS SDK, нам сначала нужна официальная учетная запись WeChat, а затем мы нажимаем «Разрешения на интерфейс», чтобы просмотреть разрешения, которые мы имеем, следующим образом:
Я не буду говорить о основных вещах выше. Давайте сосредоточимся на том, как получить jsapi_ticket и как подписать. Шаги, вызванные официальной документацией, должны сначала получить access_token, затем получить jsapi_ticket через Access_token и, наконец, подписать JSAPI_TICKET. Давайте завершим вышеуказанную работу шаг за шагом. Примечание. Официальный состав содержит примеры программ для PHP, Java, Python и Nodejs. Здесь я буду использовать C# в качестве примера для завершения вышеуказанных операций для вас.
Шаг 1: получить Access_token
В официальном документе говорится: Access_token - это глобально уникальный интерфейс, вызывая учетные данные официальной учетной записи. Access_token требуется при вызове каждого интерфейса с помощью официальной учетной записи. Разработчики должны сохранить его должным образом. Хранение Access_token должно сохранить не менее 512 пространства символов. Период достоверности Access_token в настоящее время составляет 2 часа и должен регулярно обновляться. Повторное приобретение приведет к недействительным Access_token, который вы получили в прошлый раз.
Шаг 2, чтобы получить jsapi_ticket
В официальном документе говорится: JSAPI_TICKET - это временный билет, используемый официальной учетной записью, чтобы позвонить в интерфейс WeChat JS. При нормальных обстоятельствах период достоверности jsapi_ticket составляет 7200 секунд, который получается через Access_token. Поскольку количество вызовов API для получения JSAPI_TICKET очень ограничено, частое обновление JSAPI_TICKET приведет к ограничению API вызовов и влияет на их собственный бизнес. Разработчики должны кэшировать jsapi_ticket во всем мире в своих услугах.
1. См. Следующий документ, чтобы получить Access_token (действителен в течение 7200 секунд, разработчики должны кэшировать Access_token во всем мире в своей службе): ../15/54CE45D8D30B6BF6758F68D2E95BC627.html
2. Используйте Access_token, полученный на первом шаге, чтобы запросить jsapi_ticket (действительный в течение 7200 секунд, разработчик должен кэшировать jsapi_ticket в своей службе): https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=Access_tokepekepehpehpepehpehpepehpepehpehpehpehpepehpehpehpehpehpehpehpepehpehpehpehpehpepehpehpehpehpehpepeh
После получения jsapi_ticket вы можете создать подпись для проверки разрешения JS-SDK.
Третий шаг состоит в том, чтобы генерировать подпись для проверки разрешений JS-SDK
Правила генерации подписей следующие: поля, участвующие в подписи, включают в себя uncestr (случайная строка), действительный JSAPI_Ticket, TimeStamp (TimeStamp), URL (URL -адрес текущей веб -страницы, не включая # и ее последующие части). После сортировки всех параметров, которые должны быть подписаны от малого до большого (словарь-порядок) в соответствии с кодом ASCII имени поля, формат пары значений ключей URL (то есть key1 = value1 & key2 = value2…) используется для разбивания в строкости строки1. Здесь следует отметить, что все имена параметров являются нижними символами. String1 зашифруется, а имя поля и значение поля являются исходными значениями, и не выполняется выход URL.
Что следует отметить
1. Неизрез и временная метка, используемая для подписи, должны быть такими же, как и неэптр и временная метка в wx.config;
2. URL -адрес, используемый для подписи, должен быть полным URL -адресом страницы, вызывающего интерфейс JS;
3. По соображениям безопасности разработчики должны реализовать логику подписи на стороне сервера.
Выше представлено логическая часть подписи SDK WeChat JS, и ниже приведена конкретная реализация кода:
Использование System; с использованием system.net; с использованием system.web.mvc; с использованием system.io; с использованием system.text; с использованием system.web.script.serialization; с использованием manyiabywap.models; /// <summary> //// get jsapi_ticket //// <//momary> namespace manyabyWap.controller Appid = "Appid предоставлен WeChat"; частная статическая строка Secrect = "Секрет, предоставленная WeChat"; Public Static Wxinfo AccessToken = null; // Глобальный объект, обновляется каждые 7200 секунд, WeChat имеет запросы и ограниченные временные рамки для ежедневного приобретения токенов Public State -DateTime = DateTime. (accessToken! = null) {timespan span = convert.todatetime (сверхурочная) .subtract (convert.todatetime (datetime.now)); if (span.totalhours> 2) {accesstoken = getWinxintoken (); Overtime = dateTime.now;}} inest {osptoken = getWinoken = getWin DateTime.now;} // Сгенерировать подпись временной метки TimePan TS = DateTime.Utcnow - New DateTime (1970, 1, 1, 0, 0, 0, 0); accessToken.timemp = convert.toint64 (ts.totalseconds) .toString (); // get Strange accessToken.nonCestrs = 16). "jsapi_ticket ="+ accesstoken .ticket+ "& noncestr ="+ accesstoken.noncestr+ "× tamp ="+ accesstoken.timestamp+ "& url ="+ url; accesstoken.signature = sha1 (str) .tolow Jsonrequestbehavior.allowget);} // генерировать случайную строку частной строки CreateNoNcestr (int length = 16) {string str = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789"; random r random () string.emer ant. длинный случайный характер. Конкретная длина может быть изменена сама по себе для (int i = 0; i <length; i ++) {int m = r.next (0, 62); // Здесь нижняя граница равен 0, случайное число можно получить, а верхняя граница должна быть 62, потому что случайное число не может быть получено, то есть максимум - 62, который находится в соответствии с нашим вопросительным строкой s = str.substring (m, 1); Result;} // HASH Algorithm Private Static String Sha1 (String Text) {byte [] cleanbytes = encoding.default.getbytes (text); byte [] hashedbytes = system.security.cryptography.sha1.create (). Computehash (cleanbytes); BitConverter.toString (hashedbytes) .replace ("-", "");} // get tokenprivate static wxinfo getwinxintoken () {// get access_tokenhttpwebresponse response = Creategethttpresponse ("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "& secret =" + secrect, 5000); streamreder reader = new Streamread (response.getResponseReam ()). ((line = reader.readline ())! = null) {sb.append (line.tostring ());} javascriptserializer js = new javascriptserializer (); wxinfo accesstoken = js.deserialize <wxinfo> (sb.tostring (); Creategethttpresponse ("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accesstoken.access_token + "& type = jsapi", 5000); reader = new Streamread (response.getResponseReam ()); sb = new Stringbuил (); reader.readline ())! = null) {sb.append (line.tostring ());} accesstoken = js.deserialize <wxinfo> (sb.tostring ()); return accessToken;} /// <summary> /// Create get http recemle ///1 </summary> /// <summary> /// create let http repress /// summary> /// <summary> /// create heat http -запрос ///summary> /// <summary> /// create aet http -запрос ///m. /// <param name = "timeout"> Запрашиваемый тайм -аут </param> /// <param name = "userAgent"> Запрошенная информация о клиенте может быть пустой </param> /// <param name = "cookies"> Информация о cookie, отправленная с помощью http -запроса, это может быть пустым </param> /// <returns> </returns> public httacles htatpwepresseseseseses. timeout, string userAgent = null, cookiecollection cookie = null) {if (string.isnullorempty (url)) {throw new Argirynullexception ("url");} httpwebrequest = webRequest.create (url) как httpwebrequest; method = "get"; iftpwebrequest; method = "get"; (! String.isnullorempty (userAgent)) {request.Useragent = userAgent;} if (timeout.hasvalue) {request.timeout = timeout.value;} if (cookies! = null) {request.cookiecontainer = new cookieContainer (); require.cokeecontainer. Httpwebresponse;}}}Wxinfo.cs Global объект для хранения информации токена
namespace manyabywap.models {/// <summary> /// WeChat, чтобы получить параметр возврата токена /// </summary> открытый класс wxinfo {public String appid {get; набор; } public String access_token {get; набор; } // access_tokenpublic string expires_in {get; набор; } // время истечения срока действия токена, действительное в течение 7200 секунд публично строковой билет {get; набор; } // jsapi_ticketpublic string errmsg {get; набор; } public int errcode {get; набор; } public String noncest {get; набор; } // Сгенерировать случайную строку подписной публичной строки {get; набор; } // Сгенерировать временную метку подписной подписи Public String {get; набор; } // возвращаемое значение подписи}}JS -код для инициализации на веб -странице:
// WeChat JS SDK Статус запроса var requestStatus = 0; function sharewx () {if (requestStatus! = 1) {requestStatus = 1; // Запрашивание var ajaxpara = "url =" + encodeuricomponent (window.location.href.split ('#') [0]); '/Wxmessage/gettoken', dataType: 'json', data: ajaxpara, успех: function (json) {if (undefined! Параметры, вы можете открыть их на стороне ПК. jsonobjs.signature, // требуется, см. Приложение 1jsapilist: ['checkjsapi', 'onmenusharetimeline', 'onmenushareappmessage', 'onmenushareqq', onmenusharewebo ',' onmenushareqzone '] // / Список js. 2}); wx.ready (function () {// alert ("weChat -проверка успешна"); // После проверки информации конфигурации будет выполнен метод готового. Все интерфейсные вызовы должны быть получены после того, как интерфейс конфигурации получает результат. Интерфейсы, которые называются только при вызове пользователя, их можно назвать напрямую, и не нужно размещать в готовой функции. Список интерфейсов JS, которые необходимо обнаружить. {"CheckResult": {"selectImage": true}, "errmsg": "checkjsapi: ok"}}}); wx.onmenushareweibo ({title: 'manyi.com test', // поделиться названием: 'many 'http://www.manyiaby.com/img/logo_2.jpg', // share incon success: function () {// alert function function ("совместно");}, Cancel: function () {// alert function function ("shared cancel");});}); {// Alert ("WeChat Verification Faile Res:"+RES); // Проверка информации о конфигурации будет выполнена. Триггеры, их можно вызвать напрямую, и не нужно размещать в функции готового.Здесь я представлю использование WeChat Sharing JS SDK. Вы можете ссылаться на это на основе ваших собственных потребностей. Вначале я представил его, что общий JS SDK, предоставленный WeChat, является просто обработкой кэша для внутреннего браузера WeChat. Настоящий обмен по -прежнему требует, чтобы мы нажимали кнопку обмена в правом верхнем углу.
Выше приведены не идеальные решения для обмена мобильными сети. Наконец, я представлю вам некоторые компоненты Sosh Social Sharing. Когда я вижу этот компонент, я знаю, что это то, что мне нужно, простой интерфейс, и он может сделать наш веб -сайт элегантным и удобным. Хорошо, без лишних слов, введите тему:
Выше приведено введение редактора о том, как делиться многоплатформенными функциями в мобильном веб-приложении. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!