Как получить и сохранить учетные данные для интерфейса на WeChat, я представлю их вам ниже
1. Объяснение
* Пожалуйста, обратитесь к первым двум статьям для подробных инструкций.
*Эта статья разделена на три части:
Роль учетных данных для интерфейса Access_token и объясните, как получить учетные данные для интерфейса Access_token
Как реализовать реализацию «центрального сервера управления», упомянутого в документе WeChat для сохранения Access_token
* В конце этой статьи будут даны все демонстрационные исходные коды, включая первые три статьи в этой статье.
Зачем вам получить и сохранять учетные данные для интерфейса access_token
• Начало разработки - Получите учетные данные для интерфейса вызовов
Adderd Adder: http://mp.weixin.qq.com/wiki/14/9f9c82c1af308e3b14ba9b973f99a8ba.html
• Официальный документ веб -сайта дает следующее объяснение:
◦Ccess_token - это глобально уникальный билет официальной учетной записи. Access_token требуется при вызове каждого интерфейса официальной учетной записи. Разработчики должны сохранить его должным образом. Хранение Access_token должно сохранить не менее 512 пространства символов. Период достоверности Access_token в настоящее время составляет 2 часа и должен регулярно обновляться. Повторное приобретение приведет к недействительным Access_token, который вы получили в прошлый раз.
•понимать:
◦ Мы можем просто прочитать документ и обнаружить, что многие расширенные функции, такие как: пользовательское меню, управление материалами, управление пользователями, управление учетными записями и другие расширенные функции, имеют параметр "? Access_token = token" в ссылках для запросов. Это глобальный параметр вызова. Бэкэнд WeChat должен определить личность, основанную на этом параметре, чтобы обеспечить безопасность нашей официальной учетной записи WeChat.
◦ При приказе предотвратить исключение загрузки сервера WeChat, вызванное ошибками программы в официальной учетной записи, по умолчанию интерфейс вызовов каждой официальной учетной записи не может превышать определенный предел. Здесь WeChat ограничивается 2000 раз в день. Поэтому, если мы хотим часто вызывать этот параметр, нам нужно сохранить его вручную от разработчика, и каждый Access_token действителен в течение 2 часов.
Получить учетные данные для интерфейса Access_token
• Официальный документ веб -сайта дает следующее объяснение:
◦EINTERFACE Запрос на вызов Описание
HTTP -метод запроса: получить
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret
■ вернуться к описанию
При нормальных обстоятельствах WeChat вернет следующий пакет JSON в официальный счет:
{"access_token": "access_token", "expires_in": 7200}
Когда произойдет ошибка, WeChat вернет коды ошибок и другую информацию. Пример пакета JSON заключается в следующем (этот пример является неверной аппидной ошибкой):
{"errcode": 40013, "errmsg": "Invalid Appid"}
•понимать:
◦ Запрос, этот метод может быть реализован непосредственно локально. Потому что это просто обычный запрос на получение, похожий на доступ к URL. Поэтому вам не нужно загружать эту часть кода на сервер, чтобы работать напрямую.
◦ Протокол HTTP -запроса - это запрос GET, который означает, что нам необходимо получить возвратный поток через запрос GET, а поток возврата находится в форме JSON. При звонке нам нужно нести три параметра: Grant_type, Appid и Secret. Среди них Appid и Secret являются ключевыми параметрами нашей официальной учетной записи WeChat, которые были объяснены в предыдущей статье. Результат возврата разделен на два типа: правильные и неправильные результаты. 【Baidu: json】
◦ В фактах мы можем напрямую ввести пример, приведенный документом в адресной строке: https://api.weixin.qq.com/cgi-bin/token? Grant_type = client_credential & appid = appid & secret = appsecret, мы увидим сообщение подобным: «{" errcode ": 40013," errmsg ":« Неверный аппетный намек: [pqkl0120ic111] "}", потому что это неверный запрос, результат возвращается с ошибкой.
◦ Когда мы заменим два вышеупомянутых параметра на наши тестовые номера Appid и AppSecret, мы увидим следующее сообщение: «{« access_token »:« xrllr3fnf ... badamio »,« expires_in »: 7200}», что означает успешное получение.
◦ Теперь мы получаем возвратный поток через код Java и получаем access_token.
•выполнить
Частный статический окончательный длинный MAX_TIME = 7200*1000; // WeChat позволяет максимально access_token Time (MS) Частная статическая конечная строка Tag = "weixinapitest"; // tagprivate static final string appid = "wx889b **** b3666b0b8"; // appidprate static final String secert = secert = secerter = = secerter = = = = Seerter = = = Seerter = = = Seerer = = = Seerer = = "6DA7676 *** F0A9F15FBF06027856BB"; // Секретный ключ/**Этот тест демонстрирует, как получить Access_token. * Access_token - это глобально уникальный билет официальной учетной записи. Access_token требуется при вызове каждого интерфейса официальной учетной записи. */@Testpublic void getAccess_token () бросает ioexception {// httpsurl ссылка, необходимая для api string urlstring = "https://api.wexin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "& secret =" + " +" + " +" + " +" + " +" + " +" + " +" + " +" + " +" + ". // Создать URL url requrl = new URL (urlString); // Получить ссылку httpsurlconnection httpsconn = (httpsurlconnection) requrl .openconnection (); // Получить входной поток подключения для чтения содержимого ответа inputStreamReader ISR = new InputStreamReader (httpsconn.getInputStream ()); // Читать содержимое ответа сервера и отображение char [] chars = new char [1024]; String reslut = ""; int len; while ((len = isr.read (chars))! = -1) {reslut += новая строка (chars, 0, len); } isr.close (); / * * Конвертировать JSON в Javabean. Была представлена третья сторона: gson */ gson gson = new gson (); // преобразование полученного JSON в фасоль в Java // Примечание: access_token access_token-это Javabean, созданный сам по себе. Access_token access_token = gson.fromjson (reslut, new access_token (). GetClass ()); if (access_token.getaccess_token ()! = null) {System.out.println («Полученный access_token IS:» + access_token.getAccess_token ()); System.out.println («Допустимое время access_token:« + access_token.getexpires_in () + "s"); } else {System.out.println (Tag + "Не удалось получить access_token, пожалуйста, проверьте"); }} Сохранить учетные данные для интерфейса Access_token
•Мысли
Храните полученный access_token и текущее время в файле. При извлечении определите разницу во времени между текущим временем и временем, записанным в хранилище. Если он больше, чем max_time, повторно приобретайте его и замените полученный доступ к контенту в файле. Если это меньше, чем max_time, напрямую получите его.
•выполнить
/ * * Этот метод реализует получение Access_token, сохранить и сохранить только 2 часа access_token. Если он превышает два часа, повторно приобретайте его; Если он не превышает два часа, получите его напрямую. Этот метод зависит от *: public static String getAccessToken (); * * Идея: храните полученный access_token и текущее время в файле, * При извлечении определите разницу во времени между текущим временем и временем, записанным в хранилище. Если он больше, чем max_time, повторно приобретайте его и сохраните полученный доступ к файлу для замены исходного содержимого*, и если оно меньше, чем max_time, получите его напрямую. */ @Test public void getavedaccess_token () бросает ioexception {gson gson = new gson (); String maccess_token = null; // access_token для получения; File file = new File ("temp_access_token.temp"); // местоположение, где access_token сохраняется // Если файл не существует, создайте if (! File.exists ()) file.createnewfile (); // Если размер файла равен 0, это означает, что он используется в первый раз, и введите access_token if (file.length () == 0) {maccess_token = getAccesstoken (); FileOutputStream fos = new FileOutputStream (file, false); // Приложение access_token at = new access_token (); at.setaccess_token (maccess_token); at.setexpires_in (system.currenttimemilsis () + ""); String json = gson.tojson (at); fos.write ((json) .getbytes ()); fos.close (); } else {// Читать содержимое файла fileInputStream fis = new FileInputStream (file); байт [] b = новый байт [2048]; int len = fis.read (b); String mjsonaccess_token = new String (b, 0, len); // Читать содержимое файла access_token access_token = gson.fromjson (mjsonaccess_token, new Access_token (). GetClass ()); if (access_token.getexpires_in ()! = null) {long savetime = long.parselong (access_token.getexpires_in ()); long nowtime = system.currenttimemillis (); Long Remiantime = сейчас - Savetime; // System.out.println (Tag + "Разница во времени:" + Remiantime); if (remiantime <max_time) {access_token at = gson.fromjson (mjsonaccess_token, new Access_token (). getClass ()); maccess_token = at.getaccess_token (); } else {maccess_token = getAccessToken (); FileOutputStream fos = new FileOutputStream (file, false); // Приложение access_token at = new access_token (); at.setaccess_token (maccess_token); at.setexpires_in (system.currenttimemilsis () + ""); String json = gson.tojson (at); fos.write ((json) .getbytes ()); fos.close (); }}} System.out.println ("Полученный access_token:" + maccess_token); } / * * Получите AccestOken сервера WeChat. Эта часть согласуется с getAccess_token (), комментариев не добавлено*/public static String getAccessToken () {string urlString = "https://api.wexin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "& secret =" + secert; String reslut = null; try {url requrl = new url (urlString); Httpsurlconnection httpsconn = (httpsurlconnection) requrl .openconcenection (); InputStreamReader ISR = новый inputStreamReader (httpsconn.getInputStream ()); char [] chars = new char [1024]; Reslut = ""; int len; while ((len = isr.read (chars))! = -1) {reslut += новая строка (chars, 0, len); } isr.close (); } catch (ioException e) {e.printstackTrace (); } Gson gson = new gson (); Access_token access_token = gson.fromjson (reslut, new access_token (). GetClass ()); if (access_token.getaccess_token ()! = null) {return access_token.getaccess_token (); } else {return null; }} Первые три статьи демонстрируют исходный код: http://xiazai.vevb.com/201606/yuanma/weixinapidemo(vevb.com).rar
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.