Несмотря на то, что Sina Weibo Open Platform предоставляет загрузки SDK разработки на различных языках, каждая поставляется с некоторыми демонстрационными и описанием интерфейса документов для основных интерфейсных вызовов. Однако, после того, как в эти дни я была терпеливо попытаться, я чувствую, что руководство по введению на открытой платформе Sina Weibo несколько не соответствует аннотациям использования демонстрации в пакете загруженного Java Development Weibo4j. Кроме того, моя собственная способность понимания ограничена, что приводит ко многим незаметным проблемам. К счастью, я не сдался, пытаясь понять это. Меньше чепухи, следующее - мой учебный процесс.
Если вы хотите разработать свое собственное приложение Weibo, назвав API Sina Weibo Open Platform, первым шагом является наличие учетной записи Sina Weibo и учетной записи CSDN, потому что нам необходимо использовать эти две учетные записи для создания приложений Weibo в то же время для получения ключа приложения и секретного ключа. Итак, каковы использование ключа App и секретного ключа?
На самом деле, я только что прочитал серию объяснений на открытой платформе Sina Weibo, но я не понял, как полезны ключ и секретный ключ приложения. Потому что более важным является понимание всего процесса аутентификации и авторизации OAuth, а также роль нескольких токенов и 4 URL во всем процессе аутентификации и авторизации OAuth.
Когда я впервые встретил Oauth, который понятия не имел, я подумал, что не смогу продолжить обучение. К счастью, я нашел следующие статьи, которые очень полезны для понимания OAuth. Ссылка следующая:
В OAuth есть 3 участника, а именно пользователь, поставщик услуг и потребитель. Предположим, я хочу разработать приложение (приложение) на основе открытой платформы Sina Weibo для других пользователей Sina Weibo. Их переписка следующая:
Фактически, наше приложение эквивалентно стороннему приложению для пользователя и поставщика (Sina Weibo Platform). В качестве стороннего приложения, если вы хотите получить доступ к ресурсам, сохраненным пользователем на платформе Sina Weibo, вы должны пройти серию аутентификации и авторизации, прежде чем она сможет работать.
Ниже приведена диаграмма, основанная на моем понимании всего процесса аутентификации и авторизации OAuth (вы можете взглянуть и пропустить ее. После определенного понимания некоторых из приведенных ниже понятий вы посмотрите на эту схему потока):
Сочетая блок -схему выше, вот мое понимание этих терминов и описания каждого процесса:
Ключ для потребителей и секрет потребителя: открытые платформы на Sina Weibo называются APP Key и Secret Key соответственно. Потребитель применяет к поставщику, чтобы иметь возможность назвать свой открытый API. После того, как заявка будет одобрена, поставщик будет назначен потребителю, который соответствует его требованиям, которые используются для однозначного определения того, что потребитель отвечает требованиям поставщика.
Соответствует потокам 1 и 2 на рисунке выше.
Запросить токен, запрос секрет: когда пользователь обращается к потребителю и хочет получить свой специальный сервис, сервис возвращается потребителем после интеграции ресурсов, хранящихся в самом пользователе. В настоящее время потребитель просит поставщика получить токен запроса, который используется для однозначного определения конкретной связи между потребителем и пользователем.
Соответствует потокам 3, 4 и 5 на рисунке выше.
Для обработки 6 потребитель должен направить пользователя на страницу аутентификации и авторизации OAuth, предоставленную поставщиком. Фактически, браузер перенаправляется в AuthenticationUrl с токеном запроса и запросит секретные параметры. Этот URL предоставлен провайдером.
Затем, в процессе 7 и 8, пользователь разрешает потребителя (обычно просто входит в систему, введя учетную запись и пароль), поставщик будет перенаправить на обратный ход, предоставленный потребителем в процессе 1, и прикрепляет токен OAuth и OAuth Verifier к параметрам URL.
Процесс 9 является поставщиком потребителей, который снова запрашивает поставщик, чтобы получить токен доступа через токен запроса, который был получен от поставщика ранее.
Токен доступа, секрет доступа: если поставщик возвращает токен доступа без разрешения пользователя в процессе 10, он используется для однозначного определения ресурсов и информации, хранящихся у поставщика определенного потребителя. Затем потребитель может начать использовать полученный токен доступа и секрет доступа, чтобы получить доступ к ресурсам, хранящимся в поставщике соответствующим пользователем.
После интеграции и работы пользовательской информации в процессе 11 конкретные результаты службы могут быть возвращены пользователю.
Благодаря вышеупомянутому пониманию процесса OAuth мы знаем, что пользователь не просочил учетную запись, пароль и т. Д., Требуемые для входа в поставщика для стороннего потребителя. В то же время пользователь может использовать специальные услуги потребителя. Какой умный и безопасный процесс работы!
Кроме того, на приведенном выше рисунке потребитель сделал разные запросы от поставщика. Фактически, поставщик предоставляет 3 URL -адреса с различными функциями для доступа потребителей. Скриншоты этих 3 URL на открытой платформе Sina Weibo следующие:
Используйте проверку OAuth и публикуйте на открытой платформе Sina Weibo.
Чтобы использовать API открытой платформы Sina Weibo, вы должны сначала получить ключ APP и App Secret, назначенный Sina. Ниже приведены ключ приложения и секрет App, назначенные Sina после того, как я создал приложение (это должно быть конфиденциально).
Затем загрузите Weibo SDK, я использую weibo4j в Java.
Измените ключ App и App Secret класса Weibo.java в пакете SDK, на ключ App и App Secret, который вы только что получили, как показано в следующих инструкциях для использования:
После завершения их, вы можете начать писать код на основе предоставленной демонстрации. следующее:
WeboAuth.java используется для инициализации ключа App и App Secret, необходимых для класса Weibo.java, и предоставляет методы для getRequestToken () и getTaccessToken () для получения запроса и токена доступа. Требуемые параметры показаны в коде. Кроме того, для Update () также предоставляется метод публикации текста Weibo.
Пакет weibo4j.examples; Импорт weibo4j.status; Импорт weibo4j.weibo; Импорт weibo4j.weiboexception; Импорт weibo4j.http.accesstoken; Импорт weibo4j.http.requesttoken; импортировать java.io.unsupportedencodingexception; // веб -аутентификация открытый класс weboauth {private weibo weibo; public weboAuth () {// Подготовка ключа потребителей и потребительский секрет // Приложение Sina Weibo - это приложение, которое вы применили для Key и Secret Key System.setProperty ("weibo4j.oauth.consumerkey", weibo.consumer_key); System.setProperty ("weibo4j.oauth.consumersecret", weibo.consumer_secret); weibo = new weibo (); } // Получить запрос Token public requestToken в соответствии с входящим callback_url public requestToken getRequestToken (String Backurl) {try {// указать callback_url и получить запрос запроса запроса requestToken = weibo.getoAuthrequesttoken (backurl); System.out.println ("запрос token:" + requestToken.getToken ()); System.out.println ("запрос токен секрет:" + requestToken.getTokenSecret ()); return requestToken; } catch (Exception e) {System.out.println ("Исключение произошло при получении токена запроса!"); e.printstacktrace (); вернуть ноль; }} // Получить доступ к доступу общественностью на основе входящего токена запроса и Verifier AccestOken GetTaccessToken (requestToken requestToken, string verifier) {try {accessToken accessToken = weibo.getoAuthaccesstoken (requestToken .getToken (), reaffottoken.getTokenSeccerse (); System.out.println ("access token:" + accesstoken.gettoken ()); System.out.println ("Access Token Secret:" + AccessToken.getTokenSecret ()); вернуть Accestoken; } catch (Exception e) {System.out.println ("Исключение произошло при получении токена доступа!"); e.printstacktrace (); вернуть ноль; }} // post weibo на основе входящего токена доступа и контента public void update (AccessToken Access, String Content) {try {weibo.settoken (access.getToken (), access.getTokenSecret ()); content = new String (content.getBytes ("GBK"), "UTF-8"); Статус состояния = weibo.updatestatus (content); System.out.println ("успешно размещен на weibo:" + status.gettext () + "."); } catch (unsupportEncodingexception e) {System.out.println («Исключение произошло, когда контент Weibo преобразован в кодирование!»); e.printstacktrace (); } catch (weiboexception e) {System.out.println ("Исключение произошло, когда Weibo опубликовал исключение!"); e.printstacktrace (); }}} request.jsp используется для предоставления callback_url (здесь мы настраиваем его в качестве обратной связи.jsp в следующем). После получения запроса, сохраните запрос на сеанс и перенаправьте страницу на обратную связь. JSP для проверки и авторизации. < %@ page contentType = "text/html; charset = utf-8" %> < %@ page language = "java" import = "weibo4j.*" %> < %@ page language = "java" import = "weibo4j.http.*" %> < %@ page rangue = "java" import = "weibo4j. id = "weboauth" scope = "session"/> <% if ("1" .equals (request.getParameter ("opt"))) {// пройти в обратке alling_url callback_url = "http: // localhost: 8080/sinaweibo/callback.jsp"; RequestToken requestToken = weboauth.getRequesttoken (callback_url); if (requestToken! = null) {out.println (requestToken.getToken ()); out.println (requestToken.getTokenSecret ()); session.setattribute ("requestToken", requestToken); String url = requestToken.getAuthorizationUrl ()+"& oauth_callback ="+callback_url; System.out.println ("AuthorizationUrl:" + url); //Barebonesbrowserlaunch.openurl(callback_url); //response.sendredirect (requestToken.getAuthorizationUrl ()); // перенаправление на страницу аутентификации Sina Weibo с помощью обратного адреса Callback_url, прикрепленного к response.sendredirect (url); } else {out.println ("ошибка запроса"); }} else { %> <a href = "request.jsp? Opt = 1"> Пожалуйста, нажмите на аутентификацию OAuth в веб -методе! </a> < %} %>
Callback.jsp. После перенаправления на предыдущем этапе параметр OAuth_Verifier будет прикреплен к обратке с обратной задачей. В настоящее время мы применяем для получения AccessToken на основе запроса, сохраненного в сеансе, и полученного параметра OAuth_Verifier. После получения AccestToken мы перенаправляем страницу, чтобы написать weeibo.html, страница, которая пишет Weibo.
<%@ page contentype = "text /html; charset = utf-8"%> <%@ page language = "java" import = "weibo4j.http.*"%> <%@ page language = "java" import = "weibo4j.*"%> <Jsp: usebean id = "weboauth" В http -запросе strifier = request.getParameter ("OAuth_Verifier"); out.println ("oauth_verifier:"+verifier); System.out.println ("OAuth_Verifier:"+Verifier); if (verifier! = null) {requestToken requestToken = (requestToken) session.getAttribute ("requestToken"); if (requestToken! = null) {accessToken accessToken = weboauth.getTaccessToken (requestToken, verifier); if (accesstoken! = null) {try {session.setattribute ("accessToken", accessToken); out.println ("5 go writeweibo.html"); Thread.sleep (5000); response.sendredirect ("http: // localhost: 8080/sinaweibo/writeweibo.html"); } catch (Exception e) {e.printstackTrace (); }} else {out.println ("ошибка запроса токена доступа"); }} else {out.println ("ошибка сеанса токена запроса"); }} else {out.println ("verifier string error"); } %> writeWeibo.html, очень простой HTML -файл. <html> <head> <title> Опубликована sina weibo </title> </head> <body bgcolor = "#d0d0d0"> <form action = "updateweibo.jsp" method = "> Пожалуйста, напишите текст в пределах 140 символов здесь: </br> <textarea name =" weibotext "row =" 3 "cols =" 30 "> test weibo! </textarea> </br> <input type = "propect" value = "publish"> <input type = "reset" value = "clear"> </br> </form> </body> </html> updateweibo.jsp, используемый для публикации текста weibo, то есть, чтобы вызвать метод обновления в weboauth.java. <%@ page contentType = "text /html; charset = utf-8"%> <%@ page language = "java" import = "weibo4j.http.*"%> <%@ page language = "java" import = "weibo4j.*"%> <Jsp: usebean id = "weboauth weboaut (AccessToken) session.getAttribute ("accessToken"); String weibotext = (string) request.getParameter ("weibotext"); // Непрерывная публикация того же контента Weibo вернет 400 ошибок weboauth.update (accesstoken, weibotext); out.println («Weibotext опубликовано успешно!»); %>
Перед запуском нам нужно подготовить Tomcat и поместить вышеупомянутый исходный файл в правильный каталог. Кроме того, вы также должны добавить пакет Commons-Httpclient-3.1.jar в пакете SDK в каталоге /Web-Inf /Lib, а также в Weibo4j.jar, я скомпилировал и упаковал себя (что является конкретной реализацией Java на открытой платформе Sina Weibo).
Запустите Tomcat и получите доступ к странице request.jsp в вашем браузере, как показано на рисунке ниже:
Нажмите на ссылку в нем, как показано на рисунке ниже (обратите внимание на изменения в адресной строке):
URL -адрес адресной панели заключается в следующем:
http://api.t.sina.com.cn/oauth/authorize?oAuth_token=efda6f2499877d0e6d814f8c3d31a1d1&oauth_callback=http://localhost:8080/sinaweibo/callback.jsp://localhost:8080/sinaweibo/callback.jsp://localhost:8080/sinaweibo.jp.
Заполните конкретную и действительную учетную запись Sina Weibo и пароль и авторизуйте ее. Ниже приведены результаты заполнения в моей учетной записи Weibo для тестирования и разрешения:
URL -адрес адресной панели заключается в следующем:
http: // localhost: 8080/sinaweibo/writeweibo.html
Нажмите «Публикация», как показано ниже:
Войдите в Weibo, чтобы просмотреть его, как показано ниже:
Ознакомьтесь с списком заявлений, уполномоченных этой учетной записью:
На этом этапе, вероятно, этот процесс о методе OAuth для использования открытой платформы Sina Weibo для публикации Weibo.
краткое содержание:
1. На самом деле, есть еще много деталей, о которых я не упомянул. Я пробовал много раз, прежде чем обнаружил проблему, понял проблему, а затем решил проблему;
2. Если в браузере были сохранены файлы cookie для нашего входа в Sina Weibo, вам не нужно вводить информацию об учетной записи при ее разрешении. Конечно, вы также можете изменить его без использования текущей учетной записи для авторизации;
3. Есть также некоторая информация, введенная консолью, такую как токен, URL и возвращаемая информация, которая не приведена на снимках экрана.