关于新浪微博与腾讯微博从Oauth1.0升级到Oauth2.0的过程
下载地址~ http://download.csdn.net/detail/zhangnianxiang/4375685 新浪微博 曾经@微博API 新浪那边表示 旧版的Oauth 1.0a将在不久的2012.9.1号停止。这个是一个很苦的消息。意味着涉及微博的都要修改。 Oauth2.0相比较于Oauth1.0的话 流程少了很多,其中
下载地址~
http://download.csdn.net/detail/zhangnianxiang/4375685
新浪微博
曾经@微博API 新浪那边表示 旧版的Oauth 1.0a将在不久的2012.9.1号停止。这个是一个很苦逼的消息。意味着涉及微博的都要修改。
Oauth2.0相比较于Oauth1.0的话 流程少了很多,其中一点就是签名。之前都是用signpost这个开源项目辅助。现在完全可以去掉了
好吧。废话不说了。
新浪微博Oauth2.0认证的官方说明
http://open.weibo.com/wiki/Oauth2
简单步骤:1获取code 2获取accessToken 3使用accessToken访问api
新浪的这份授权机制还是比较详细。理解起来比较容易
接口 | 说明 |
---|---|
OAuth2/authorize | 请求用户授权Token |
OAuth2/access_token | 获取授权过的Access Token |
OAuth2/get_oauth2_token | OAuth1.0的Access Token更换至OAuth2.0的Access Token |
步骤1http://open.weibo.com/wiki/Oauth2/authorize
获取code
请求参数
必选 | 类型及范围 | 说明 | |
---|---|---|---|
client_id | true | string | 申请应用时分配的AppKey。 |
redirect_uri | true | string | 授权回调地址,站外应用需与设置的回调地址一致,站内应用需填写canvas page的地址。 |
response_type | false | string | 返回类型,支持code、token,默认值为code。 |
state | false | string | 用于保持请求和回调的状态,在回调时,会在Query Parameter中回传该参数。 |
display | false | string | 授权页面的终端类型,取值见下面的说明。 |
-
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
登录后复制
- 值得注意的是这边的redirect_uri 必须与 申请的应用那边设置(高级设置里面)的回调地址一致。否则就会出现 error:redirect_uri_mismatch.
-
- 这是网页载入授权界面,用户填完账号密码之后按下确定
- 服务器将返回一个“回调地址+code=xxxxx”的URL(如果是腾讯微博还有openid和openkey等等)
- 把code是步骤2的关键
-
- 步骤2
- 获取accessToken
-
-
API https://api.weibo.com/oauth2/access_token
- 将code等参数 以POST传给服务器将返回
-
-
{ "access_token": "ACCESS_TOKEN", "expires_in": 1234, "remind_in":"798114", "uid":"12341234" }
登录后复制
- 这些数据都是要做数据持久化管理的。
- 腾讯微博返回稍有不同,但是并不影响
-
- 步骤3
- 访问API
-
-
-
- 研究中遇到的一些问题
- 1.腾讯微博 那群脑残的腾讯微博把appke和secret变成 ClientID和ClientSecret
-
-
oAuth.setClientId(StatcParame.T_CONSUMER_KEY);
oAuth.setClientSecret(StatcParame.T_CONSUMER_SECRET); -
- 下面直接贴源码了
-
- 1
- sina
- webview承载授权页面的设置
-
web=(WebView)findViewById(R.id.web); web.getSettings().setJavaScriptEnabled(true); web.getSettings().setSupportZoom(true); web.getSettings().setBuiltInZoomControls(true); web.setWebViewClient(new WebViewC());
登录后复制WebviewClient
登录后复制class WebViewC extends WebViewClient{ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); Log.v("aaa", "===onPageStarted==="+url); if(url.contains("code=")){ try { Intent intent = new Intent(Oauth2Activity.this,MainActivity.class); Uri uri = Uri.parse(url); String code = uri.getQueryParameter("code"); String openid =uri.getQueryParameter("openid"); String openkey=uri.getQueryParameter("openkey"); editor.putString(StatcParame.T_OPEN_ID, openid); editor.putString(StatcParame.T_OPEN_KEY, openkey); HttpClient httpclient=MyCountHttpClient.getNewHttpClient(); URI accessToken = null; List<namevaluepair> parameters=new ArrayList<namevaluepair>(); //必须编码,否则无法向服务器发送微博 if(codeFlag==1){ parameters.add(new BasicNameValuePair("client_id", StatcParame.S_CONSUMER_KEY)); parameters.add(new BasicNameValuePair("client_secret", StatcParame.S_CONSUMER_SECRET)); parameters.add(new BasicNameValuePair("redirect_uri", StatcParame.S_CALLBACK)); accessToken = URI.create(StatcParame.S_API_access_token); intent.putExtra("mode", 1); }else if(codeFlag ==2){ parameters.add(new BasicNameValuePair("client_id", StatcParame.T_CONSUMER_KEY)); parameters.add(new BasicNameValuePair("client_secret", StatcParame.T_CONSUMER_SECRET)); parameters.add(new BasicNameValuePair("redirect_uri", StatcParame.T_CALLBACK)); accessToken = URI.create(StatcParame.T_API_access_token); intent.putExtra("mode", 2); } parameters.add(new BasicNameValuePair("grant_type", "authorization_code")); parameters.add(new BasicNameValuePair("code", code)); HttpPost post=new HttpPost(accessToken); HttpResponse response=null; post.setEntity(new UrlEncodedFormEntity(parameters ,HTTP.UTF_8) ); post.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false); response = httpclient.execute(post); if(codeFlag==1){ JSON.GetOauth(sharedpre,Utils.getResponseText(response)); }else if(codeFlag==2){ String tempUrl = StatcParame.T_CALLBACK+"?"+Utils.getResponseText(response); Uri temp = Uri.parse(tempUrl); String access_token = temp.getQueryParameter("access_token"); String expires_in=temp.getQueryParameter("expires_in"); String name=temp.getQueryParameter("name"); editor.putString(StatcParame.T_ACCESS_TOKEN, access_token); editor.putString(StatcParame.T_EXPIRES_IN, expires_in); editor.putString(StatcParame.T_NAME, name); editor.commit(); } startActivity(intent); Oauth2Activity.this.finish(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } </namevaluepair></namevaluepair>
登录后复制
这个方法集合了sina和tencent的处理
这步走完就拿到ACCESSTOKEN了
下面贴个发布微博的方法
SINA发送一个带图片的微博
<span>Weibo weibo = Weibo.getInstance(); AccessToken accessToken = new AccessToken(shared.getString(StatcParame.S_ACCESS_TOKEN, ""), StatcParame.S_CONSUMER_SECRET); accessToken.setExpiresIn(shared.getString(StatcParame.S_EXPIRES_IN, "")); weibo.setAccessToken(accessToken); weibo.setupConsumerConfig(StatcParame.S_CONSUMER_KEY, StatcParame.S_CONSUMER_SECRET); weibo.setRedirectUrl("http://www.sina.com.cn"); try { String msg = URLEncoder.encode(body, HTTP.UTF_8); WeiboParameters bundle = new WeiboParameters(); bundle.add("status", msg); bundle.add("pic", "/sdcard/1.jpg"); String rlt = ""; String url = Weibo.SERVER + "statuses/upload.json"; Utility.setAuthorization(new Oauth2AccessTokenHeader()); rlt = weibo.request(context, url, bundle, Utility.HTTPMETHOD_POST, weibo.getAccessToken()); Toast.makeText(context, rlt, 1000).show(); Log.v("aaa","Successfully upload the status to ["+ rlt+ "]."); return "OK"; } catch (Exception e1) { e1.printStackTrace(); }</span>
登录后复制
TENCent发送一条微博
OAuthV2 oAuth =new OAuthV2(); oAuth.setAccessToken(shared.getString(StatcParame.T_ACCESS_TOKEN, "")); oAuth.setOauthVersion("2.a"); oAuth.setClientIP("117.25.173.11"); oAuth.setOpenid(shared.getString(StatcParame.T_OPEN_ID, "")); oAuth.setOpenkey(shared.getString(StatcParame.T_OPEN_KEY, "")); oAuth.setClientId(StatcParame.T_CONSUMER_KEY); oAuth.setClientSecret(StatcParame.T_CONSUMER_SECRET); try { TAPI api = new TAPI("2.a"); String respone = api.add(oAuth, "json","abcc","117.25.173.11","","","0"); Toast.makeText(context, respone, 1000).show(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
登录后复制
源码之后上传。
联系 zhangnianxiang@gmail.com

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

1、首先打开手机网络浏览器,搜索微博网页版,进入后点击左上角头像按钮。2、然后点击右上角设置。3、点击设置里面的版本切换选项。4、接着在版本切换里选择彩版选项。5、点击搜索,进入搜索页面。6、输入关键词后,点击找人。7、出来的搜索完成界面点击筛选。8、最后在发布时间栏输入具体日期后,点击筛选即可。

5月30日,腾讯宣布旗下混元大模型全面升级,基于混元大模型的App“腾讯元宝”正式上线,苹果及安卓应用商店均可下载。相比此前测试阶段的混元小程序版本,面向工作效率场景,腾讯元宝提供了AI搜索、AI总结、AI写作等核心能力;面向日常生活场景,元宝的玩法也更加丰富,提供了多个特色AI应用,并新增了创建个人智能体等玩法。“腾讯做大模型不争一时之先。”腾讯云副总裁、腾讯混元大模型负责人刘煜宏表示:“过去的一年,我们持续推进腾讯混元大模型的能力爬坡,在丰富、海量的业务场景中打磨技术,同时洞察用户的真实需求

1、在微博app中点击右下方【我的】进入个人主页。2、然后,点击右上方的齿轮图标。3、这时,我们进入了设置页面,在这里选择【屏蔽设置】进入。4、在屏蔽设置中我们就可以看到自己屏蔽的好友,轻触点击,在弹出的选项中点击【解除屏蔽】即可。5、或者用户们可以直接搜索微博用户进入屏蔽用户户主页,点击右上方【...】也能解除黑名单。

1、首先打开微博,点击我的,点击草稿箱。2、然后长按任意一条草稿,点击清空草稿箱或删除草稿。3、最后点击确定即可。

1、首先打开微博,点击搜索,点击更多热搜。2、然后选择一个热搜进入。3、接着进入热搜的评论实况模式后,找到并点击右上角标准版。4、最后即可回到热搜标准的评论区状态了,想要继续查看实况评论区,点击右上角实况版即可。注:只有当前实时评论很多的情况下才会自动进入实况模式,部分热搜会自动进入实况模式。一般热搜都是标准模式。

1、首先打开手机微博,点击右下角【我】(如图所示)。2、接着点击右上角【齿轮】打开设置(如图所示)。3、然后找到并打开【通用设置】(如图所示)。4、随后进入【视频随着】选项(如图所示)。5、再打开【视频上传清晰度】设置(如图所示)。6、最后选择【原画质】就能不压缩了(如图所示)。

微博用户一旦开通SVIP功能,就可以管理访客记录,而且如果自己去访问某个陌生人的首页,如果在展示之前就可以把他删除掉,这样子他们就不知道是自己浏览首页了,那么?微博svip删除访客记录对方还能看到吗 微博svip删除访客记录对方还能看到吗 1、svip删除访客记录对方就看不到了,只会看到访问人数增加,但是不会显示来访者的ID和头像。 2、普通用户和vip用户无法删除或查看访问记录,只能看到有多少人访问过自己。 3、微博访问的数据会在每日8:00进行更新,如果想要删除访问记录的话需要在

6月21日,华为开发者大会2024(HDC2024)再聚东莞松山湖。本届大会上,最令人关注的莫过于HarmonyOSNEXT正式面向开发者和先锋用户启动Beta,并全方位展示了HarmonyOSNEXT全场景、原生智能和原生安全三大“王炸”级创新特性。HarmonyOSNEXT原生智能:开启全新AI时代放弃安卓框架之后,HarmonyOSNEXT成为真正独立于安卓、iOS的操作系统,堪称是一场史无前例的脱胎换骨。在其众多新特性中,原生智能无疑是最能带给用户直观感受和体验升级的新特性
