Embora o Sina Weibo Open Platform forneça downloads de SDK de desenvolvimento em vários idiomas, cada um vem com alguns documentos de descrição de demonstração e interface para chamadas básicas de interface. No entanto, depois de tentar pacientemente hoje em dia, sinto que a orientação de introdução sobre a plataforma aberta do Sina Weibo é um tanto inconsistente com as anotações de uso de demonstração no pacote Weibo4J de desenvolvimento Java. Além disso, minha própria capacidade de compreensão é limitada, o que leva a muitos problemas discretos. Felizmente, eu não desisti de tentar entendê -lo. Menos bobagem, o seguinte é o meu processo de aprendizado.
Se você deseja desenvolver seu próprio aplicativo Weibo, chamando a API da Sina Weibo Open Platform, a primeira etapa é ter uma conta Sina Weibo e uma conta CSDN, porque precisamos usar essas duas contas para criar aplicativos do WEIBO ao mesmo tempo para obter a chave do aplicativo e a chave secreta. Então, quais são os usos da chave do aplicativo e da chave secreta?
Na verdade, acabei de ler uma série de explicações na plataforma aberta do Sina Weibo, mas não entendi como a chave do aplicativo e a chave secreta são úteis. Porque o mais importante é entender todo o processo de autenticação e autorização do OAuth, bem como o papel de vários tokens e 4 URLs em todo o processo de autenticação e autorização do OAuth.
Quando conheci Oauth, que não fazia ideia, pensei em continuar aprendendo. Felizmente, encontrei os seguintes artigos, que são muito úteis para entender o OAuth. O link é o seguinte:
Existem 3 participantes no OAuth, ou seja, usuário, provedor de serviços e consumidor. Suponha que eu queira desenvolver um aplicativo (APP) com base na plataforma aberta do Sina Weibo para outros usuários do Sina Weibo usarem. A correspondência deles é a seguinte:
De fato, nosso aplicativo é equivalente a um aplicativo de terceiros para usuário e provedor (Sina Weibo Platform). Como um aplicativo de terceiros, se você deseja acessar os recursos salvos pelo usuário na plataforma Sina Weibo, você deve passar por uma série de autenticação e autorização antes que ele possa funcionar.
A seguir, é apresentado um diagrama com base na minha compreensão de todo o processo de autenticação e autorização do OAuth (você pode dar uma olhada e pular. Depois de ter um certo entendimento de alguns dos conceitos abaixo, você relembrará esse fluxograma):
Combinando o fluxograma acima, aqui está o meu entendimento desses termos e descrição de cada processo:
Chave do consumidor e segredo do consumidor: as plataformas abertas no Sina Weibo são chamadas de chave de aplicativo e chave secreta, respectivamente. O consumidor se inscreve ao provedor para poder chamar sua API aberta. Após a aprovação do pedido, o provedor será atribuído ao consumidor que atenda aos seus requisitos, que é usado para identificar exclusivamente que o consumidor atende aos requisitos do provedor.
Correspondente aos fluxos 1 e 2 na figura acima.
Solicitar token, solicitar segredo: Quando o usuário acessar o consumidor e deseja obter seu serviço especial, o serviço é retornado pelo consumidor depois de integrar os recursos armazenados no próprio usuário. No momento, o consumidor solicita que o provedor obtenha um token de solicitação, usado para identificar exclusivamente a associação específica entre o consumidor e o usuário.
Correspondente aos fluxos 3, 4 e 5 na figura acima.
Para processar 6, o consumidor deve direcionar o usuário para a página de autenticação e autorização OAuth fornecida pelo provedor. De fato, o navegador redireciona para o AuthenticationUrl com o token da solicitação e solicita parâmetros secretos anexados. Este URL é fornecido pelo provedor.
Em seguida, nos processos 7 e 8, o usuário autoriza o consumidor (geralmente basta fazer login digitando a conta e a senha), o provedor redirecionará para o callback_url fornecido pelo consumidor no processo 1 e anexa o token e o verificador OAuth aos parâmetros de URL.
O processo 9 é o consumidor que solicita o provedor novamente para obter token de acesso através do token de solicitação que já foi obtido do provedor antes.
Acesso Token, Access Secret: Se o provedor retornar um token de acesso sem autorização do usuário no processo 10, é usado para identificar exclusivamente os recursos e as informações armazenadas no fornecedor de um determinado consumidor. Em seguida, o consumidor pode começar a usar o token de acesso obtido e acessar segredo para acessar os recursos armazenados no provedor pelo usuário correspondente.
Depois de integrar e operar as informações do usuário no processo 11, os resultados de serviço específicos podem ser retornados ao usuário.
Através do entendimento acima do processo OAuth, sabemos que o usuário não vazou a conta, a senha etc. necessária para fazer login no provedor para o consumidor de terceiros. Ao mesmo tempo, o usuário pode usar os serviços especiais do consumidor. Que processo de operação inteligente e seguro!
Além disso, na figura acima, o consumidor fez solicitações diferentes do provedor. De fato, o fornecedor fornece 3 URLs com diferentes funções para o acesso ao consumidor. As capturas de tela desses 3 URLs na plataforma aberta de Sina Weibo são as seguintes:
Use a verificação do OAuth e poste na plataforma aberta de Sina Weibo
Para usar a API da plataforma aberta do Sina Weibo, você deve primeiro obter a chave do aplicativo e o segredo do aplicativo designado pela Sina. Abaixo estão a chave do aplicativo e o segredo do aplicativo designado pela SINA depois que eu criei o aplicativo (isso deve ser mantido confidencial).
Em seguida, faça o download do Weibo SDK, eu uso o Weibo4j em Java.
Modifique a chave do aplicativo e o segredo do aplicativo da classe weibo.java no pacote SDK para a chave do aplicativo e o segredo do aplicativo que você acabou de obter, conforme mostrado nas seguintes instruções para uso:
Depois de concluí -los, você pode começar a escrever código com base na demonstração fornecida. do seguinte modo:
Weboauth.java é usado para inicializar a chave e o segredo do aplicativo necessário para a classe weibo.java e fornece métodos para getRequestToken () e gettaccessToken () para obter o requestToken e o token de acesso. Os parâmetros necessários são mostrados no código. Além disso, um método para publicar um texto Weibo também é fornecido para atualizar ().
pacote weibo4j.example; importar weibo4j.status; importar weibo4j.weibo; importar weibo4j.weiboException; importar weibo4j.http.accessToken; importar weibo4j.http.requestToken; importar java.io.unsupportEnCodingException; // Autenticação da Web Classe Public Weboauth {Private Weibo Weibo; public weboauth () {// Preparar a chave do consumidor e o secretário do consumidor // correspondente ao aplicativo Sina Weibo é o aplicativo que você solicitou a chave e segredo do sistema.setProperty ("weibo4j.oauth.consumerkey", weibo.consumer_key); System.setProperty ("weibo4j.oauth.consumersecret", weibo.consumer_secret); weibo = new weibo (); } // Obtenha o token de solicitação Public RequestToken de acordo com o retorno de callback_url Public requestToken getRequestToken (string backurl) {try {// especifique o callback_url e obtenha o token requestToken requestToken = weibo.geoauthRequestToken (backurl); System.out.println ("Solicite token:" + requestToken.getToken ()); System.out.println ("Solicite token segredo:" + requestToken.getTokensecret ()); Retornar RequestToken; } catch (Exceção e) {System.out.println ("Exceção ocorreu ao obter o token da solicitação!"); E.PrintStackTrace (); retornar nulo; }} // Obtenha o token de acesso público com base no token e verificador de solicitação de entrada de accessToken gettaccessToken (requestToken requestToken, string verificador) {try {AccessToken AccessToken = weibo.GeToAuthaccessToken (requestToken .getToken (), requestToken.getTokenCret (), verificador. System.out.println ("Token de acesso:" + AccessToken.getToken ()); System.out.println ("Acesso Token Secret:" + AccessToken.getTokensecret ()); Retornar AccessToken; } catch (Exceção e) {System.out.println ("Exceção ocorreu ao obter o token de acesso!"); E.PrintStackTrace (); retornar nulo; }} // Publique o Weibo com base no token de acesso e conteúdo de acesso ATUALIZAÇÃO VOID PUBLICA (acesso ACCESSTOKN, String Content) {Try {Weibo.setToken (Access.getToken (), Access.getTokensecret ()); Content = new String (Content.getBytes ("GBK"), "UTF-8"); Status status = weibo.updatestatus (content); System.out.println ("publicado com sucesso no weibo:" + status.getText () + "."); } Catch (UnsupportEdEncodingException e) {System.out.println ("Exceção ocorreu quando o conteúdo do Weibo converteu para a codificação!"); E.PrintStackTrace (); } catch (weiboException e) {System.out.println ("Exceção ocorreu quando o Weibo posta uma exceção!"); E.PrintStackTrace (); }}} request.jsp é usado para fornecer callback_url (aqui personalizamos -o como callback.jsp no seguinte). Depois de obter o requestToken, salve o Solicitação na sessão e redirecione a página para o callback.jsp para verificação e autorização. < %@ página contentType = "text/html; charset = utf-8" %> < %@ página de página = "java" import = "weibo4j. id = "weboauth" scope = "session"/> <% if ("1" .equals (request.getParameter ("opt"))) {// Passe em callback_url string 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 ()); // redireciona para a página de autenticação Sina Weibo com o endereço de retorno de chamada_url anexado à resposta.sendRedirect (URL); } else {out.println ("erro de solicitação"); }} else { %> <a href = "request.jsp? opt = 1"> Clique em Autenticação OAuth no método da web! </a> < %} %>
callback.jsp. Após redirecionar na etapa anterior, o parâmetro OAuth_Verifier será anexado ao retorno de chamada. No momento, solicitamos a obtenção do AccessToken com base no Solicitação salvo na sessão e no parâmetro OAuth_Verifier obtido. Depois que o AccessToken é obtido, redirecionamos a página para writeweibo.html, a página que grava o Weibo.
<%@ página contenttype = "text /html; charset = utf-8"%> <%@ página de página = "java" import = "weibo4j.http.*"%> <%@ página idioma = "java" import = "weibo4j.* na sequência de solicitação http verificador = request.getParameter ("OAuth_Verifier"); out.println ("OAuth_Verifier:"+verificador); System.out.println ("OAuth_Verifier:"+verificador); if (verificador! = null) {requestToken requestToken = (requestToken) session.getAttribute ("requestToken"); if (requestToken! = null) {accessToken accessToken = weboauth.gettaccestToken (requestToken, verificador); if (accessToken! = null) {tente {session.setAttribute ("accessToken", accessToken); out.println ("5 vá para writeweibo.html"); Thread.sleep (5000); Response.sendRedirect ("http: // localhost: 8080/sinaweibo/writeweibo.html"); } catch (Exceção e) {e.printStackTrace (); }} else {out.println ("Erro de solicitação de token de acesso"); }} else {out.println ("Solicite Erro de Token Sessão"); }} else {out.println ("erro de string verificador"); } %> writeweibo.html, um arquivo HTML muito simples. <html> <head> <title> Publicado Sina Weibo </ititle> </head> <corpo bgcolor = "#d0d0d0"> <formulário action = "updateweibo.jsp" method = "post"> por favor, escreva texto dentro de 140 caracteres aqui: </br> <textarea name = "weiBOTT"> "3" 3 "40 aqui: </br> <textarea name =" weiBart ">" 3 "3" 40 aqui: </br> <textarea name = "weiBart"> "3" 3 "40 aqui: </br> <textarea name =" weiBart "" "3" 30 "3" </texttarea> </br> <input type = "submit" value = "publish"> <input type = "reset" value = "clear"> </br> </morm> </body> </html> updateweibo.jsp, usado para postar texto weibo, isto é, para chamar o método de atualização em weboauth.java. <%@ página contenttype = "text /html; charset = utf-8"%> <%@ página de página = "java" import = "weibo4j.http.*"%> <%@ página de página = "java" import = "weibo4j. (AccessToken) session.getAttribute ("accessToken"); String weiBotext = (string) request.getParameter ("weiBotext"); // A publicação contínua do mesmo conteúdo do Weibo retornará 400 erros woboauth.update (accessToken, weiBotext); out.println ("WeiBotext publicado com sucesso!"); %>
Antes de executar, precisamos preparar o Tomcat e colocar o arquivo de origem acima no diretório correto. Além disso, você também deve adicionar o pacote Commons-httpclient-3.1.jar no pacote SDK no diretório /web-inf /lib, bem como no weibo4j.jar eu compilar e embalar (que é a implementação específica de Java na plataforma Sina Weibo Open).
Execute o tomcat e acesse a página request.jsp no seu navegador, conforme mostrado na figura abaixo:
Clique no link, como mostrado na figura abaixo (observe as alterações na barra de endereço):
O URL da barra de endereços é o seguinte:
http://api.t.sina.com.cn/oauth/authorize?oauth_token=efda6f2499877d0e6d814f8c3d31a1d1&oauth_callback=http://localhost:808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808.
Preencha a conta e a senha do Sina Weibo específicas e válidas e autorize -a. A seguir, são apresentados os resultados do preenchimento da minha conta do Weibo para testá -lo e autorizá -lo:
O URL da barra de endereços é o seguinte:
http: // localhost: 8080/sinaweibo/writeweibo.html
Clique em "Publish", como mostrado abaixo:
Faça login no Weibo para visualizá -lo, como mostrado abaixo:
Confira a lista de inscrições autorizadas por esta conta:
Neste ponto, provavelmente é esse processo sobre o método OAuth usar a plataforma Sina Weibo Open para publicar o Weibo.
resumo:
1. De fato, ainda existem muitos detalhes que eu não mencionei. Eu tentei muitas vezes antes de descobrir o problema, entendi o problema e resolvi o problema;
2. Se os cookies para o nosso login para as informações da conta Sina Weibo forem salvos no navegador, você não precisará inserir as informações da conta ao autorizá -las. Obviamente, você também pode modificá -lo sem usar a conta corrente para autorização;
3. Existem também algumas informações inseridas pelo console, como informações de retorno de token, URL e servidor, que não são fornecidas nas capturas de tela.