使用新浪微博开放平台api同步微博内容至自己网站(微博开放平台开发记录方便查用(图)名词介绍)

优采云 发布时间: 2021-09-28 19:30

  使用新浪微博开放平台api同步微博内容至自己网站(微博开放平台开发记录方便查用(图)名词介绍)

  因为工作需要,接触了微博开放平台的开发。本记录是为方便查阅和使用而特制的。

  一、准备。

  1. 微博账号。注册很容易。

  2.微博账号成为开发者。

  登录微博开放平台登录您的注册账号,然后进入管理中心完成开发者基本信息和身份认证。

  这时候还需要浏览微博开放平台的文档,了解这个开放平台的一些规范术语。

  单击每个链接进行查看。顺便看一下微博API文档,里面有介绍,有些接口调用需要获取access_token。这篇文章就是为了达到这个目的。

  二、创建一个应用程序。

  比如我们要开发一个网站,然后在这个网站中连接微博开放平台,调用开放平台的接口。然后我们需要在登录微博开放平台后创建一个应用。

  创建应用程序后,您将获得应用程序的 App key 和 AppSecret。然后我们就是利用这个信息调用新浪微博的auth2.0认证获取access_token。

  拿到access_token后,我们就可以调用我们需要的接口了,比如发微博等。

  1. 创建引用的地方。开放平台--》点击上方导航菜单中的“微链接”,这里的微链接的概念也是这个开放平台的一个术语,具体含义可以查看相关文档。

  2.创建什么类型的应用程序?

  随意看看你的情况。测试时,您可以创建任何东西,尝试并充满信心地去做。我创建的是一个网页引用,所以我发现它很容易输入,不需要填写太多信息。

  如下所示:

  

  创建完成后,可以在我的应用中看到:

  

  单击以查看与应用程序相关的信息。一会儿我们需要用到这里的app key和app secret,还需要配置应用授权回调地址。

  三、下载微博开发SDK。

  开发SDK中有一些示例,可以直接作为参考。下载链接。我下载了Java版的weibo4j。下载后,我导入了开发工具。如下所示:

  

  代码很多,不要慌,先在examples包下的oauth2包下找到OAuth4Code类。我们需要运行这个类。

  这个类完成oauth操作,这一步包括两个请求

  第一次:

https://api.weibo.com/oauth2/authorize?client_id=1234567890&redirect_uri=https://api.weibo.com/oauth2/default.html&response_type=code

第二次:

https://api.weibo.com/oauth2/access_token

  请注意,第一个请求中有一个 client_id。这个参数需要在config.properties中配置,对应我们上面创建的应用的app key。

  同样,这个配置文件中有一个client_SERCRET,对应我们上面创建的应用的app sercret,复制进去。

  还有一个参数redirect_uri,比较关键。当我们运行OAuth4Code类时,第一次请求完成后,会回调这个地址,同时带入一个code参数。

  我们需要复制这个参数,在控制台中输入,然后回车。发起第二个请求,这个请求会返回我们需要的access_token。那么问题来了,如何配置这个地址呢?

  1. 在上面创建的参考中,找到接口管理--》授权机制也没有配置回调地址的地方,填写即可。

  2. 上面的链接应该在config.properties中配置,如下:

  client_ID = 1234567890

client_SERCRET = 890a2ab550cf8d7a0090ff2f19850f3a

redirect_URI = https\://api.weibo.com/oauth2/default.html

baseURL=https://api.weibo.com/2/

accessTokenURL=https://api.weibo.com/oauth2/access_token

authorizeURL=https://api.weibo.com/oauth2/authorize

rmURL=https\://rm.api.weibo.com/2/

  三、 运行程序获取access_token。

  上面第二步完成后,配置就完成了。运行以下类:

  public class OAuth4Code {

public static void main(String [] args) throws WeiboException, IOException{

Oauth oauth = new Oauth();

BareBonesBrowserLaunch.openURL(oauth.authorize("code"));

System.out.println(oauth.authorize("code"));

System.out.print("Hit enter when it's done.[Enter]:");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String code = br.readLine();

Log.logInfo("code: " + code);

try{

System.out.println(oauth.getAccessTokenByCode(code));

} catch (WeiboException e) {

if(401 == e.getStatusCode()){

Log.logInfo("Unable to get the access token.");

}else{

e.printStackTrace();

}

}

}

}

  程序运行后,在控制台输入一行log后,进入等待控制台输入的状态,浏览器立即打开了一个页面,跳转后页面变成了如下:

  

  复制浏览器地址栏中的code参数值。回到myeclipse,粘贴这个值,然后回车。程序继续执行,使用这个code参数,再次发起请求,终于成功后就可以拿到access_token了

  整个过程的效果日志:

  

  四、本例中oauth授权流程总结。

  两次请求

  第一次:

  https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code

  同意授权后,会重定向:

  //同意授权后会重定向

http://www.example.com/response&code=CODE

  第二次:

  按照上面的代码再次发起请求。获取 access_token

  会有一些问题,主要原因是授权地址配置不正确。根据本文中的示例配置,您可以成功运行程序。获取 access_token。

  错误代码如下:

  错误代码(error) 错误代码(error_code) 错误描述(error_description)

  redirect_uri_mismatch

  21322

  重定向地址不匹配

  无效请求

  21323

  请求是非法的

  invalid_client

  21324

  client_id 或 client_secret 参数无效

  invalid_grant

  21325

  提供的访问授权无效、已过期或已撤销

  未经授权的客户端

  21326

  客户端没有权限

  expired_token

  21327

  令牌过期

  unsupported_grant_type

  21328

  不支持的 GrantType

  unsupported_response_type

  21329

  不支持的响应类型

  拒绝访问

  21330

  用户或授权服务器拒绝授予数据访问权限

  暂时不可用

  21331

  该服务暂时不可用

  a*敏*感*词*ey权限被拒绝

  21337

  应用权限不足

  全文参考:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线