关于接入新浪微博第三方登录

关于接入新浪微博第三方登录

大家好,又见面了,我是全栈君。

 近期,做一个关于联合第三方平台的登录接入,初次接触开放平台,在此做个笔记

  开发之前的准备如下:

  1、注册新浪微博

  2、访问新浪微博开发平台http://open.weibo.com,如果是企业,申请企业接入,并提交相关资料进行审核;如果是个人开发者,就请申请个人开发者应用,一下以开发者为例

  3、使用新浪微博的开放API,就需要跟新浪申请一个appkey和App Secret,这个是入口,必须获取到这两个才能进行接下来的接入工作

  4、进入http://open.weibo.com完善个人信息之后,必须还要做完身份认证审核,审核完成之后,新浪开放平台就会给出appkey和App Secret

  5、接下来就是如何使用appkey和App Secret了,需要去下载开放平台中文档或者是demo代码,其实提供的文档基本都是技术文档,很多东西没有讲清楚,对于初次接触的人,还是会遇到很多麻烦

  6、新浪开放平台提供了很多不同开发语言的sdk,这里我选择java sdk,下载一个(包含新版接口及OAuth2.0)的zip文件,解压之后可以直接import到eclipse中去,结构如下,包括weibo4j源代码和example代   码

  关于接入新浪微博第三方登录

  这里有一个config配置文件,打开如下:

  关于接入新浪微博第三方登录

  之前我们申请的appkey和App Secret就派上用场了,这里的client_ID就是appkey,client_SERCRET就是App Secret,把相应的内容填上去,另外redirect_URI这就是回调地址,

  点击“第三方”——》跳转微博登陆——》登录ok,授权——》回调自己的应用,这里就是回调地址的意思了。

  7、开始去运行测试程序,测试程序在example下,包weibo4j.examples.oauth2下的类OAuth4Code,这里我们需要做一些修改,修改程序中的

  oauth.authorize(“code”,args[0],args[1]),将这段改成oauth.authorize(“code”,””,”all”),至于为什么这么改,这里请阅读接口文档oauth.authorize的使用说明

  假设这里我们还没有回调地址,配置文件中的redirect_URI为空,运行之后,他会自动打开浏览器运行测试,显示如下:

  关于接入新浪微博第三方登录

  此时的URL地址为:https://api.weibo.com/oauth2/authorize?client_id=3613929600&redirect_uri=&response_type=code&state=&scope=all

  这里说明我的appkey和App Secret是有效的,这里由于我们没有创建正式的应用,新浪无法识别我的来源

  8、在开放平台上创建应用,如下图所示

  关于接入新浪微博第三方登录

  这里有三类应用,网站接入、站内应用、移动应用,如果是企业行为,有公开的域名可以访问,并且应用程序是通过域名进行访问,这里任何一种方式都可以用,但如果我们只是简单开发者,没有公用域名,比如是内  部局域网模式,ip为内网地址192.168.1.*开头,本地127.0.0.1之类的,这里就只能选择创建站内应用,填写如下

  关于接入新浪微博第三方登录

  这里红色框标记的地方就是回调地址,如果我没有公网ip和域名,局域网玩玩就这么填写就ok了,不过这里不能用localhost代替127.0.0.1,这里按照配置要求完成,这个配置里面的要求是很严谨的,

  特别是下面的几个应用图标,总之比较麻烦,这里结束了之后,就可以提交审核了。

  9、提交审核之后,第一次大约1天时间,新浪开放平台就会发邮件到你的邮箱,告知你审核结果,不过这里审核结果失败与否没有关系,关键就是要提交审核,没有审核成功,这里照常可以用

  关于接入新浪微博第三方登录

  10、完成测试工程中的配置文件redirect_URI,这里必须与创建应用时填写的【应用实际地址】保持一致,这就是回调地址!完成配置之后,再次运行OAuth4Code.java,如图所示

  关于接入新浪微博第三方登录

  这里就跳转到新浪微博的登录页面,登录新浪微博的账户之后,就需要点击授权,表示你的微博帐号相关内容可以被接入的平台分享你的信息等等,授权结束之后,

  会返回一个code,这个code非常重要,就是我们整个接入第三方平台的开门钥匙,有这个code之后,我们就可以获取用户的access_token,UID等内容,就相当于整个接入过程打通了,

  11、调用新浪微博的开放API

  这里就需要研读这些API了,从而满足接入要实现的需求了,首先要熟悉的就是OAuth 2.0授权接口,http://open.weibo.com上都可以查,如下:

  关于接入新浪微博第三方登录

  12、通过一个Servlet程序调用开放API获取新浪微博的UID、微博名称示例  

复制代码
response.setContentType("text/html;charset=UTF-8");
        String accessToken = null ;
        String uid = null ;
        String screenName = null ;        
        String username = null ;
        AccessToken accessTokenObj = null ;
        Oauth oauth2 = new Oauth();
        try {
            out = response.getWriter();
            accessTokenObj = oauth2.getAccessTokenByCode(code) ;
            logger.info(accessTokenObj);
            accessToken = accessTokenObj.getAccessToken() ;
            oauth2.setToken(accessToken) ;
            Account account = new Account() ;
            account.client.setToken(accessToken) ;
            JSONObject uidJson = account.getUid() ;
            uid = uidJson.getString("uid") ;
            
            Users users = new Users() ;
            users.client.setToken(accessToken) ;
            User weiboUser = users.showUserById(uid) ;
            username = weiboUser.getName() ;
            screenName = weiboUser.getScreenName() ;
            
            
        } catch (WeiboException | IOException | JSONException e) {
            e.printStackTrace();
        }
        out.println("微博访问Token_Info:" + accessTokenObj + "\t");
        out.println("微博访问Token:" + accessToken + "\t");
        out.println("微博用户-Uid:" + uid + "\t");
        out.println("微博用户-名称:" + screenName + "\t");
        out.flush();
        out.close();*/
复制代码

 

本文转自一米一阳光博客园博客,原文链接:  http://www.cnblogs.com/candle806/p/3600956.html  ,如需转载请自行联系原作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108038.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • es6数组 newSet 数组去重 并集 交集 差集

    es6数组 newSet 数组去重 并集 交集 差集数组去重vararr=[1,2,3,3,1,4];[…newSet(arr)];//[1,2,3,4]Array.from(newSet(arr));//[1,2,3,4][…newSet(‘ababbc’)].join(’’);//“abc”字符串去重newSet(‘icedoughnut’);//Set(11){“i”,“c”,“e”,””,“d”,…}并集vara=newSet([1,2,3]);varb=ne

    2025年7月27日
    5
  • 前端如何获取当前时间_js 获取年份

    前端如何获取当前时间_js 获取年份前端js获取当前时间的方法:vartime=newDate();time.getYear();//获取当前年份time.getFullYear();//获取完整的年份(4位,1970-???)time.getMonth();//获取当前月份(0-11,0代表1月)time.getDate();//获取当前日(1-31)tim…

    2022年9月23日
    4
  • java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho

    java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.chojava.lang.AbstractMethodError:org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)Lorg/springframework/cloud/client/ServiceInstance; atorg.springframework.clo

    2022年6月2日
    166
  • 一致性Hash算法以及java实现「建议收藏」

    一致性Hash算法以及java实现「建议收藏」目前我们很多时候都是在做分布式系统,但是我们需把客户端的请求均匀的分布到N个服务器中,一般我们可以考虑通过Object的HashCodeHash%N,通过取余,将客户端的请求分布到不同的的服务端。但是在分布式集群中我们通常需要添加或删除服务器,所以通过取余是不行的。一致性Hash就是为了解决这个问题。  ConsistentHashing一致性Hash的原理  1、环型Hash空间…

    2022年10月5日
    4
  • Spring Boot和SpringCloud Alibaba学习笔记

    Spring Boot和SpringCloud Alibaba学习笔记

    2021年7月11日
    97
  • php中文的正则表达式_php 正则表达式匹配中文汉字

    php中文的正则表达式_php 正则表达式匹配中文汉字文章告诉你如何利用php正则表达式匹配中文汉字哦,下面我们主要讲利用preg_matchmb_eregi来验证汉字,并且正则过程出现问题的解决方法。preg_match(“/[a-z]{3,14}/”,$content,[可选]$a);这个返回布尔值,$a得到的是数组,把匹配到的字符防在$a;正则汉字echo(mb_eregi(“[x80-xff].”,”中d文”)?”有”:”…

    2022年6月18日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号