之前在“新浪微博客户端开发第一步”时就碰到这问题,后来通过一个比较“另类”的方法暂时解决了。今天终于通过比较正规的方法,使用Java程序直接获取到新浪微博Ouath2授权所需的code。进而获取到access_token…

PS:主要还是使用到DJ Native Swing。

运行图示:

代码如下:

import  java.awt.BorderLayout ;

import  javax.swing.JDialog ;
import  javax.swing.SwingUtilities ;

import  weibo4j.Oauth ;
import  weibo4j.examples.oauth2.Log ;
import  weibo4j.http.AccessToken ;
import  weibo4j.model.WeiboException ;

import  chrriis.common.UIUtils ;
import  chrriis.dj.nativeswing.swtimpl.NativeInterface ;
import  chrriis.dj.nativeswing.swtimpl.components.JWebBrowser ;
import  chrriis.dj.nativeswing.swtimpl.components.WebBrowserAdapter ;
import  chrriis.dj.nativeswing.swtimpl.components.WebBrowserNavigationEvent ;

/**
 * OAuth2授权
 * @author 蜗牛都知道
 * @see <a href="http://binary.duapp.com/"></a>
 */
public  class OAuthDialog  {
     private  String accessToken ;
     private Oauth oauth  =  new Oauth ( ) ;
     private  String lastURL ;
     public OAuthDialog ( )  {
         final  JDialog dialog  =  new  JDialog ( ) ;
        dialog. setTitle ( "授权" ) ;
        dialog. setResizable ( false ) ;
        dialog. setBounds ( 30,  30,  608,  522 ) ;
        JWebBrowser webBrowser  =  new JWebBrowser ( ) ;
        webBrowser. setBarsVisible ( false ) ;
        webBrowser. setButtonBarVisible ( false ) ;
        webBrowser. setDefaultPopupMenuRegistered ( false ) ;
         try  {
            lastURL  = oauth. authorize ( "code" ) ;
            webBrowser. navigate (lastURL ) ;
         }  catch  (WeiboException e )  {
            e. printStackTrace ( ) ;
         }
        webBrowser. addWebBrowserListener ( new WebBrowserAdapter ( )  {
            @Override
             public  void locationChanged (WebBrowserNavigationEvent arg0 )  {
                 String site  = arg0. getWebBrowser ( ). getResourceLocation ( ) ;
                 if (lastURL. equals (site ) ) {
                     return ;
                 }
                lastURL  = site ;
                 if (site  !=  null ) {
                    dialog. dispose ( ) ;
                 }
                 System. out. println (site ) ;
                 String code  = site. substring (site. lastIndexOf ( "code=" )  +  5 ) ;
                accessToken  = getAccessTokenByCode (code ) ;
                 System. out. println (accessToken ) ;
             }

} ) ;
        dialog. add (webBrowser,  BorderLayout. CENTER ) ;
        dialog. setVisible ( true ) ;
        dialog. setDefaultCloseOperation ( JDialog. DISPOSE_ON_CLOSE ) ;
     }

private  String getAccessTokenByCode ( String code )  {
        Log. logInfo ( "code:"  + code ) ;
        AccessToken accessToken  =  null ;
         try  {
            accessToken  = oauth. getAccessTokenByCode (code ) ;
         }  catch  (WeiboException e )  {
             if  ( 401  == e. getStatusCode ( ) )  {
                Log. logInfo ( "Unableto get the access token." ) ;
             }  else  {
                e. printStackTrace ( ) ;
             }
         }
         return accessToken. getAccessToken ( ) ;

}

public  String getAccessToken ( )  {
         return accessToken ;
     }
     public  static  void main ( String [ ] args ) {
        NativeInterface. open ( ) ;
        UIUtils. setPreferredLookAndFeel ( ) ;
         SwingUtilities. invokeLater ( new  Runnable ( )  {
             public  void run ( )  {
                 new OAuthDialog ( ) ;
             }

} ) ;
        NativeInterface. runEventPump ( ) ;
     }
}

记得导入包: DJNativeSwing-SWT.jar、DJNativeSwing.jar及swt-3.7M5-win32-win32-x86.jar

示例代码下载:只通过Java进行新浪微博Ouath2授权

原创作品,转载请注明出处:蜗牛都知道

只通过Java进行新浪微博Ouath2授权相关推荐

  1. Java调用 新浪微博API 接口发微博(包含js微博组件、springMVC新浪登录)详解

    参考自:http://www.myexception.cn/program/1930025.html https://blog.csdn.net/qq_36580777/article/details ...

  2. java 的新浪oauth_新浪微博OAuth授权的Java实现

    一.OAuth协议简介 OAuth授权在各社交网站中广泛使用,该协议使用户不需要直接向第三方应用提供用户名及密码,并且使一个账户在多个网站中使用成为可能,OAuth协议的细节描述可参考其官方网站:ht ...

  3. Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰

    最近要做个课程设计,使用微博控制树莓派,树莓派再控制发光二极管的亮和灭,主要设计分两层,上层是用Java调用新浪微博API来实现对微博旳监听,当我的微博被回复时能够自动读取评论内容,并根据评论的指令内 ...

  4. Java调用 新浪微博API 接口发微博,逐项讲解,绝对清晰

    转载自:http://www.myexception.cn/program/1930025.html Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰 最近要做个课程设计,使用微博控制树莓 ...

  5. Android 使用新浪微博SSO授权

    新浪微博SSO授权,很早就做好了,只是一直没有时间整理博客,今天加班,晚上闲暇之时便想到整理一下.由于整个七月份很忙,加班很多.前段时间把腾讯微博的SSO认证整理好了.想在七月份翻篇之前再写点东西.好 ...

  6. java自带发送邮件,成都汇智动力-java邮件发送只需要java自带的mailjar

    原标题:成都汇智动力-java邮件发送只需要java自带的mailjar java邮件发送只需要java自带的mailjar Email email = emailService.queryEmail ...

  7. java实现 印象笔记AOuth 授权认证

    java实现 印象笔记AOuth 授权认证 原创文章,转载请注明出处 前言: 由于我们公司最近考虑在我们的设备上接入第三方公有云(有道云笔记,印象笔记等),所以就让我调研市面上的公有云,可接入我们设备 ...

  8. java如何实现微信授权登录

    要在 Java 中实现微信授权登录,需要按照以下步骤操作: 在微信开放平台(https://open.weixin.qq.com/)申请微信登录的第三方平台资格,并获取相应的 AppID 和 AppS ...

  9. java 微博不出现授权_新浪微博快速登录,为什么出现了授权页面,点击授权但是却没有获取用户信息呢?...

    从别人那里接手一个H5的项目,项目主要使用 gulp (nodejs),基于 zepto , canjs 做为主要框架, 进行路由.模板渲染和数据绑定, reqiuriejs 作为 js 加载器. 在 ...

最新文章

  1. 在CentOS 6.9 x86_64的nginx 1.12.2上安装第三方模块set-misc-nginx-module实录
  2. MySQL 常见操作指令
  3. Linux--线程编程
  4. 白话Elasticsearch44-深入聚合数据分析之案例实战_颜色+品牌下钻分析时按最深层metric进行排序
  5. groupby多个字段性能_MySQL今天我们说下分组(group by)
  6. VTK:科赫雪花用法实战
  7. Mybatis(2)-注解使用-IDEA
  8. Matlab一个窗口中绘制多个图形
  9. python输出输入的指定位数的密码_用python生成指定位数的密码
  10. Asp.Net SignalR 集群会遇到的问题
  11. Windows Server2012 服务器修改密码过期时间
  12. 站在招聘者角度看面试 | 掘金技术征文
  13. 常用sql语句(备忘)
  14. 51中断优先级及中断嵌套
  15. Windows10LTSC wsapp 高CPU占用
  16. 汽车电子功能安全标准ISO26262解析(一)——总述部分
  17. 如何删除无效的网络驱动器
  18. 槃星—第2天任务—JAVA实现游戏数据修改以及风控设计
  19. 关于自由人的信仰:忠于自己的理想,勇于面对出现在自己人生道路上的任何东西...
  20. 百度微问答的4个坑爹之处

热门文章

  1. 腾讯云人脸核身uniapp+后端代码
  2. javascript从入门到跑路-----小文的js学习笔记(25)------运动框架----匀速运动、缓冲运动、多物体运动、链式运动
  3. sas统计分析学习笔记(九)——方差分析
  4. 计算机怎样导入程序,怎样快速打开电脑上的计算器程序
  5. Solidworks2016安装的时候遇到下面问题
  6. 数据中心机房施工设计的规范要求
  7. 更改计算机菜单字体大小,Win10如何修改右键菜单字体?Win10调整右键菜单字体大小的方法...
  8. 全球有多少C++、Java、PHP、Python程序员?
  9. 小程序入坑记:懒加载
  10. SQL中将两个日期进行相减得到分钟或者秒