联合第三方平台登录接入,初次接触开放平台的准备
优采云 发布时间: 2021-05-29 18:45联合第三方平台登录接入,初次接触开放平台的准备
最近在联合第三方平台做一个登录访问,第一时间联系开放平台,在这里做个笔记
开发前的准备工作如下:
1、注册新浪微博
2、 访问新浪微博开发平台,如果是企业,申请企业准入,提交相关资料审核;如果是个人开发者,请申请个人开发者申请,以开发者为例。
3、 使用新浪微博的开放API,需要向新浪申请一个a*敏*感*词*ey和App Secret。这是入口。您必须获得这两个才能进行下一个访问工作
输入4、以完成个人信息后,必须完成身份验证审核。审核完成后,新浪开放平台将提供a*敏*感*词*ey和App Secret
5、下一步是如何使用a*敏*感*词*ey和App Secret。您需要在开放平台下载文档或演示代码。其实提供的文档基本都是技术文档。 ,还是会有很多麻烦
6、 新浪开放平台提供了多种不同开发语言的SDK。这里我选择Javasdk,下载一个zip文件(包括新版界面和OAuth2.0)。解压后直接导入eclipse即可。,结构如下,包括weibo4j源码和例子代码
这是一个config配置文件,打开如下:
我们之前申请的a*敏*感*词*ey和App Secret就派上用场了,其中client_ID为a*敏*感*词*ey,client_SERCRET为App Secret,填写对应内容,redirect_URI为回调地址,
点击“第三方”——“重定向到微博登录——”登录确定,授权——“回调自己的应用,这里是回调地址的含义。
7、开始运行测试程序,测试程序在example下,包weibo4j.examples.oauth2下的类OAuth4Code,这里需要做一些改动,修改程序
oauth.authorize("code",args[0],args[1]),把这一段改成oauth.authorize("code","","all"),至于为什么要改,请教点击这里阅读接口文档oauth.authorize使用说明
假设我们还没有回调地址,并且配置文件中的redirect_URI为空,运行后他会自动打开浏览器运行测试,如下图:
此时的网址为:
这表明我的 a*敏*感*词*ey 和 App Secret 是有效的。由于我们尚未在此处创建官方应用程序,因此新浪无法识别我的来源
8、在开放平台上创建了一个应用,如下图
应用分为三种类型,网站 访问、现场应用和移动应用。如果是企业活动,可以访问公共域名,通过域名访问应用程序。这里可以使用任何方法。但是如果我们只是简单的开发者,没有公有域名,比如内网模式,ip就是内网地址192.168.1.*,本地127.0.0.1类的,这里只能选择创建现场应用,填写如下
这里红框标注的地方就是回调地址。如果我没有公网ip和域名,这样填局域网玩是可以的,但是这里不能用localhost代替127.0.0.1,这个按照符合配置要求。这个配置要求非常严格。
特别是下面的应用图标,比较麻烦。完成后,您可以提交它们以供审核。
9、 提交审核后,新浪开放平台会在提交审核后约一天左右第一时间发送邮件至您的邮箱,通知您审核结果。但是,审核结果是否失败并不重要。关键是提交审核。 ,审查未成功,可以照常在这里使用
10、 完成测试项目中的配置文件redirect_URI。这必须与创建应用程序时填写的【应用程序实际地址】一致。这是回调地址!配置完成后,再次运行OAuth4Code.Java,如图
这里跳转到新浪微博的登录页面。登录您的新浪微博账号后,需要点击授权,即平台可以访问您微博账号的内容,分享您的信息等,授权结束后,
将返回一个代码。这段代码非常重要。它是打开我们整个访问第三方平台大门的钥匙。有了这段代码,我们就可以获取到用户的access_token、UID等内容,相当于整个访问过程。上,
11、调用新浪微博开放API
这里需要研究一下这些API来满足访问的需求。首先要熟悉的是OAuth2.0授权接口,可以在上面查看,如下:
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();*/