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

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

Jun 07, 2016 pm 03:27 PM
oauth2 kira-kira naik taraf Weibo Sina Tencent

下载地址~ 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
Salin selepas log masuk

值得注意的是这边的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"
 }
Salin selepas log masuk

这些数据都是要做数据持久化管理的。
腾讯微博返回稍有不同,但是并不影响

步骤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()); 
Salin selepas log masuk
WebviewClient
Salin selepas log masuk
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>
Salin selepas log masuk

这个方法集合了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>
Salin selepas log masuk


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();
		}
Salin selepas log masuk


源码之后上传。

联系 zhangnianxiang@gmail.com


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara mencari Weibo sebelumnya mengikut tarikh di Weibo_Cara mencari Weibo sebelumnya mengikut tarikh di Weibo Cara mencari Weibo sebelumnya mengikut tarikh di Weibo_Cara mencari Weibo sebelumnya mengikut tarikh di Weibo Mar 30, 2024 pm 07:26 PM

1. Mula-mula buka penyemak imbas web mudah alih, cari versi web Weibo, dan klik butang avatar di penjuru kiri sebelah atas selepas masuk. 2. Kemudian klik Tetapan di penjuru kanan sebelah atas. 3. Klik pilihan penukaran versi dalam tetapan. 4. Kemudian pilih pilihan versi warna dalam suis versi. 5. Klik Cari untuk memasuki halaman carian. 6. Selepas memasukkan kata kunci, klik Cari Orang. 7. Apabila antara muka penyelesaian carian muncul, klik Penapis. 8. Akhir sekali, masukkan tarikh tertentu dalam lajur masa keluaran dan klik Penapis.

Apl model besar Tencent Yuanbao berada dalam talian! Hunyuan dinaik taraf untuk mencipta pembantu AI serba boleh yang boleh dibawa ke mana-mana Apl model besar Tencent Yuanbao berada dalam talian! Hunyuan dinaik taraf untuk mencipta pembantu AI serba boleh yang boleh dibawa ke mana-mana Jun 09, 2024 pm 10:38 PM

Pada 30 Mei, Tencent mengumumkan peningkatan menyeluruh model Hunyuannya Apl "Tencent Yuanbao" berdasarkan model Hunyuan telah dilancarkan secara rasmi dan boleh dimuat turun dari kedai aplikasi Apple dan Android. Berbanding dengan versi applet Hunyuan dalam peringkat ujian sebelumnya, Tencent Yuanbao menyediakan keupayaan teras seperti carian AI, ringkasan AI, dan penulisan AI untuk senario kecekapan kerja untuk senario kehidupan harian, permainan Yuanbao juga lebih kaya dan menyediakan pelbagai ciri , dan kaedah permainan baharu seperti mencipta ejen peribadi ditambah. "Tencent tidak akan berusaha untuk menjadi yang pertama membuat model besar, Liu Yuhong, naib presiden Tencent Cloud dan orang yang bertanggungjawab bagi model besar Tencent Hunyuan, berkata: "Pada tahun lalu, kami terus mempromosikan keupayaan untuk Model besar Tencent Hunyuan Dalam teknologi Poland yang kaya dan besar dalam senario perniagaan sambil mendapatkan cerapan tentang keperluan sebenar pengguna

Cara melepaskan seseorang yang disekat di Weibo_Cara menyahsekat Weibo Cara melepaskan seseorang yang disekat di Weibo_Cara menyahsekat Weibo Mar 30, 2024 am 09:51 AM

1. Klik [Saya] di penjuru kanan sebelah bawah apl Weibo untuk memasuki halaman utama peribadi anda. 2. Kemudian, klik ikon gear di penjuru kanan sebelah atas. 3. Pada masa ini, kami memasuki halaman tetapan, pilih [Seting Sekat] di sini untuk masuk. 4. Dalam tetapan penyekatan, kita boleh melihat rakan yang telah kita sekat, ketik padanya dan klik [Nyahsekat] dalam pilihan pop timbul. 5. Atau pengguna boleh terus mencari pengguna Weibo untuk memasuki halaman utama pengguna yang disekat, dan klik [...] di bahagian atas sebelah kanan untuk mengalih keluar senarai hitam.

Bagaimana untuk memadamkan kotak draf 'Weibo'_Tutorial pada memadam kotak draf 'Weibo' Bagaimana untuk memadamkan kotak draf 'Weibo'_Tutorial pada memadam kotak draf 'Weibo' Mar 30, 2024 pm 12:46 PM

1. Mula-mula buka Weibo, klik pada Saya, dan klik pada kotak draf. 2. Kemudian tekan lama mana-mana draf dan klik untuk mengosongkan kotak draf atau memadam draf. 3. Akhir sekali klik OK.

Cara mematikan mod langsung Weibo_Cara mematikan mod langsung Weibo Cara mematikan mod langsung Weibo_Cara mematikan mod langsung Weibo Mar 30, 2024 am 10:16 AM

1. Mula-mula buka Weibo, klik Cari dan klik Lagi Carian Hangat. 2. Kemudian pilih carian panas untuk masuk. 3. Kemudian masukkan mod langsung ulasan carian panas, cari dan klik versi standard di penjuru kanan sebelah atas. 4. Akhir sekali, anda boleh kembali ke kawasan ulasan standard carian panas Jika anda ingin terus melihat kawasan ulasan langsung, klik versi langsung di penjuru kanan sebelah atas. Nota: Hanya apabila terdapat banyak ulasan masa nyata ia akan memasuki mod langsung secara automatik Sesetengah carian panas akan memasuki mod langsung secara automatik. Umumnya, carian panas berada dalam mod standard.

Cara menyiarkan video di Weibo tanpa memampatkan kualiti imej_Cara menyiarkan video di Weibo tanpa memampatkan kualiti imej Cara menyiarkan video di Weibo tanpa memampatkan kualiti imej_Cara menyiarkan video di Weibo tanpa memampatkan kualiti imej Mar 30, 2024 pm 12:26 PM

1. Mula-mula buka Weibo pada telefon mudah alih anda dan klik [Saya] di sudut kanan bawah (seperti yang ditunjukkan dalam gambar). 2. Kemudian klik [Gear] di penjuru kanan sebelah atas untuk membuka tetapan (seperti yang ditunjukkan dalam gambar). 3. Kemudian cari dan buka [Tetapan Umum] (seperti yang ditunjukkan dalam gambar). 4. Kemudian masukkan pilihan [Video Follow] (seperti yang ditunjukkan dalam gambar). 5. Kemudian buka tetapan [Video Upload Resolution] (seperti yang ditunjukkan dalam gambar). 6. Akhir sekali, pilih [Kualiti Imej Asal] untuk mengelakkan pemampatan (seperti yang ditunjukkan dalam gambar).

Jika Weibo svip memadamkan rekod pelawat, adakah pihak lain masih boleh melihatnya? Jika Weibo svip memadamkan rekod pelawat, adakah pihak lain masih boleh melihatnya? Apr 02, 2024 am 08:04 AM

Sebaik sahaja pengguna Weibo mengaktifkan fungsi SVIP, mereka boleh mengurus rekod pelawat, dan jika mereka melawat halaman utama orang yang tidak dikenali, mereka boleh memadamkannya sebelum memaparkannya, supaya mereka tidak tahu bahawa mereka sedang menyemak imbas halaman utama ? Bolehkah pihak yang satu lagi melihat itu selepas memadam rekod pelawat di Weibo svip? Bolehkah pihak lain melihatnya selepas memadamkan rekod pelawat di Weibo svip 1. Selepas memadamkan rekod pelawat pada svip, pihak yang satu lagi tidak dapat melihatnya bilangan pelawat, tetapi ia tidak akan menunjukkan ID pengguna dan avatar. 2. Pengguna biasa dan pengguna VIP tidak boleh memadam atau melihat rekod akses Mereka hanya boleh melihat bilangan orang yang telah melawati mereka. 3. Data akses Weibo akan dikemas kini pada 8:00 setiap hari Jika anda ingin memadam rekod akses, anda perlu

Xiaoyi dinaik taraf kepada ejen pintar! HarmonyOS NEXT Perisikan asli Hongmeng membuka era AI baharu Xiaoyi dinaik taraf kepada ejen pintar! HarmonyOS NEXT Perisikan asli Hongmeng membuka era AI baharu Jun 22, 2024 am 01:56 AM

Pada 21 Jun, Persidangan Pembangun Huawei 2024 (HDC2024) berkumpul semula di Tasik Songshan, Dongguan. Pada persidangan ini, perkara yang paling menarik perhatian ialah HarmonyOSNEXT secara rasminya melancarkan Beta untuk pembangun dan pengguna perintis, dan secara komprehensif menunjukkan tiga ciri inovatif HarmonyOSNEXT yang "menghancurkan raja" dalam semua senario, perisikan asli dan keselamatan asli. Perisikan asli HarmonyOSNEXT: Membuka era AI baharu Selepas meninggalkan rangka kerja Android, HarmonyOSNEXT telah menjadi sistem pengendalian yang benar-benar bebas daripada Android dan iOS, yang boleh dipanggil kelahiran semula yang tidak pernah berlaku sebelum ini. Di antara banyak ciri baharunya, kecerdasan asli tidak diragukan lagi merupakan ciri baharu yang terbaik boleh membawa perasaan intuitif pengguna dan mengalami peningkatan.

See all articles