ホームページ データベース mysql チュートリアル 关于新浪微博与腾讯微博从Oauth1.0升级到Oauth2.0的过程

关于新浪微博与腾讯微博从Oauth1.0升级到Oauth2.0的过程

Jun 07, 2016 pm 03:27 PM
oauth2 について アップグレード 微博 シナ テンセント

下载地址~ 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


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Weiboで過去のWeiboを日付で検索する方法_Weiboで過去のWeiboを日付で検索する方法 Weiboで過去のWeiboを日付で検索する方法_Weiboで過去のWeiboを日付で検索する方法 Mar 30, 2024 pm 07:26 PM

1. まずモバイル Web ブラウザを開き、Weibo Web バージョンを検索し、入力後に左上隅にあるアバター ボタンをクリックします。 2. 次に、右上隅の「設定」をクリックします。 3. 設定でバージョン切り替えオプションをクリックします。 4. 次に、バージョン スイッチでカラー バージョン オプションを選択します。 5. 「検索」をクリックして検索ページに入ります。 6. キーワードを入力した後、「Find People」をクリックします。 7. 検索完了インターフェイスが表示されたら、「フィルター」をクリックします。 8. 最後に、リリース時刻列に特定の日付を入力し、[フィルター] をクリックします。

ビッグモデルアプリ Tencent Yuanbao がオンラインになりました! Hunyuan がアップグレードされ、どこにでも持ち運べるオールラウンドな AI アシスタントが作成されました ビッグモデルアプリ Tencent Yuanbao がオンラインになりました! Hunyuan がアップグレードされ、どこにでも持ち運べるオールラウンドな AI アシスタントが作成されました Jun 09, 2024 pm 10:38 PM

5月30日、TencentはHunyuanモデルの包括的なアップグレードを発表し、Hunyuanモデルに基づくアプリ「Tencent Yuanbao」が正式にリリースされ、AppleおよびAndroidアプリストアからダウンロードできるようになりました。前のテスト段階のフンユアン アプレット バージョンと比較して、Tencent Yuanbao は、日常生活シナリオ向けの AI 検索、AI サマリー、AI ライティングなどのコア機能を提供し、Yuanbao のゲームプレイもより豊富で、複数の機能を提供します。 、パーソナルエージェントの作成などの新しいゲームプレイ方法が追加されます。 Tencent Cloud 副社長で Tencent Hunyuan 大型モデルの責任者である Liu Yuhong 氏は、「テンセントは、最初に大型モデルを開発しようとはしません。」と述べました。 Tencent Hunyuan の大型モデルは、ビジネス シナリオにおける豊富で大規模なポーランド テクノロジーを活用しながら、ユーザーの真のニーズを洞察します。

Weibo でブロックされた相手を解除する方法_Weibo のブロックを解除する方法 Weibo でブロックされた相手を解除する方法_Weibo のブロックを解除する方法 Mar 30, 2024 am 09:51 AM

1. Weibo アプリの右下隅にある [My] をクリックして、個人のホームページに入ります。 2. 次に、右上隅にある歯車アイコンをクリックします。 3. この時点で、設定ページに入ります。ここで[ブロック設定]を選択して入ります。 4. ブロック設定では、ブロックした友達を確認してタップし、ポップアップ オプションで [ブロックを解除] をクリックします。 5. または、ユーザーは Weibo ユーザーを直接検索してブロックされたユーザーのホームページに入り、右上の [...] をクリックしてブラックリストを削除することもできます。

「Weibo」の下書きボックスを削除する方法_「Weibo」の下書きボックスを削除するチュートリアル 「Weibo」の下書きボックスを削除する方法_「Weibo」の下書きボックスを削除するチュートリアル Mar 30, 2024 pm 12:46 PM

1. まず Weibo を開き、「My」をクリックして、下書きボックスをクリックします。 2. 次に、いずれかのドラフトを長押しし、クリックしてドラフト ボックスをクリアするか、ドラフトを削除します。 3. 最後に「OK」をクリックします。

Weiboライブモードをオフにする方法_Weiboライブモードをオフにする方法 Weiboライブモードをオフにする方法_Weiboライブモードをオフにする方法 Mar 30, 2024 am 10:16 AM

1. まず Weibo を開き、「検索」をクリックし、「その他のホット検索」をクリックします。 2. 次に、ホット検索を選択して入力します。 3. 次に、ホット検索コメントライブモードに入り、右上隅にある標準バージョンを見つけてクリックします。 4. 最後に、ホット検索の標準コメント エリアに戻ります。引き続きライブ コメント エリアを表示したい場合は、右上隅のライブ バージョンをクリックします。注: リアルタイム コメントが多い場合にのみ、自動的にライブ モードに入ります。一部のホット検索では、自動的にライブ モードに入ります。通常、ホット検索は標準モードで行われます。

画質を圧縮せずにWeiboに動画を投稿する方法_画質を圧縮せずにWeiboに動画を投稿する方法 画質を圧縮せずにWeiboに動画を投稿する方法_画質を圧縮せずにWeiboに動画を投稿する方法 Mar 30, 2024 pm 12:26 PM

1. まず携帯電話で Weibo を開き、右下隅の [Me] をクリックします (図を参照)。 2. 次に、右上隅の [歯車] をクリックして設定を開きます (図を参照)。 3. 次に、[一般設定] を見つけて開きます (図を参照)。 4. 次に、[Video Follow] オプションを入力します (図を参照)。 5. 次に、[ビデオアップロード解像度]設定を開きます(図を参照)。 6. 最後に、圧縮を避けるために [オリジナルの画質] を選択します (図を参照)。

Weibo svipが訪問者の記録を削除しても、相手はそれを見ることができますか? Weibo svipが訪問者の記録を削除しても、相手はそれを見ることができますか? Apr 02, 2024 am 08:04 AM

Weibo ユーザーが SVIP 機能を有効にすると、訪問者記録を管理でき、知らない人のホームページを訪問した場合、表示する前に削除することができるため、ホームページを閲覧していることを相手に知られることはありません。 Weibo svip で訪問者記録を削除した後、相手はそれを見ることができますか? Weibo svip で訪問者記録を削除した後、相手はそれを見ることができません。訪問者数は表示されますが、訪問者、ユーザーの ID とアバターは表示されません。 2. 一般ユーザーおよびVIPユーザーは、アクセス履歴の削除や閲覧はできず、閲覧者数の確認のみが可能です。 3. Weiboのアクセスデータは毎日8時に更新されますので、アクセス記録を削除したい場合は、

Xiaoyi がインテリジェント エージェントにアップグレードされました! HarmonyOS NEXT 紅蒙ネイティブインテリジェンスが新たな AI 時代を切り開く Xiaoyi がインテリジェント エージェントにアップグレードされました! HarmonyOS NEXT 紅蒙ネイティブインテリジェンスが新たな AI 時代を切り開く Jun 22, 2024 am 01:56 AM

6月21日、Huawei Developer Conference 2024(HDC2024)が東莞市松山湖に再び集まりました。今回のカンファレンスで最も目を引いたのは、HarmonyOSNEXTが開発者とパイオニアユーザー向けにベータ版を正式に開始し、すべてのシナリオにおけるHarmonyOSNEXTの3つの「画期的な」革新的な機能、ネイティブインテリジェンスとネイティブセキュリティを包括的に実証したことだ。 HarmonyOSNEXT ネイティブ インテリジェンス: 新しい AI 時代の幕開け HarmonyOSNEXT は、Android フレームワークを放棄した後、Android や iOS から独立した真に独立したオペレーティング システムとなり、前例のない復活と言えます。多くの新機能の中でも、ネイティブ インテリジェンスは間違いなく、ユーザーに直感的な感覚と体験のアップグレードを最もよくもたらす新機能です。

See all articles