<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        關于新浪微博與騰訊微博從Oauth1.0升級到Oauth2.0的過程

        來源:懂視網 責編:小采 時間:2020-11-09 07:37:11
        文檔

        關于新浪微博與騰訊微博從Oauth1.0升級到Oauth2.0的過程

        關于新浪微博與騰訊微博從Oauth1.0升級到Oauth2.0的過程:下載地址~ http://download.csdn.net/detail/zhangnianxiang/4375685 新浪微博 曾經@微博API 新浪那邊表示 舊版的Oauth 1.0a將在不久的2012.9.1號停止。這個是一個很苦的消息。意味著涉及微博的都要修改。 Oauth2.0相比較于Oauth1.0的話 流
        推薦度:
        導讀關于新浪微博與騰訊微博從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的話 流程少了很多,其中

        下載地址~

        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 parameters=new ArrayList();
        	//必須編碼,否則無法向服務器發送微博
        	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();
        	}
        	 }
         }
        	}
        

        這個方法集合了sina和tencent的處理

        這步走完就拿到ACCESSTOKEN了


        下面貼個發布微博的方法


        SINA發送一個帶圖片的微博

        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();
        	}


        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


        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        關于新浪微博與騰訊微博從Oauth1.0升級到Oauth2.0的過程

        關于新浪微博與騰訊微博從Oauth1.0升級到Oauth2.0的過程:下載地址~ http://download.csdn.net/detail/zhangnianxiang/4375685 新浪微博 曾經@微博API 新浪那邊表示 舊版的Oauth 1.0a將在不久的2012.9.1號停止。這個是一個很苦的消息。意味著涉及微博的都要修改。 Oauth2.0相比較于Oauth1.0的話 流
        推薦度:
        標簽: QQ 微博 新浪微博
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产精品成人免费一区二区| 麻豆精品成人免费国产片| 日韩毛片免费无码无毒视频观看| 亚洲AV无码成人精品区天堂| 青柠影视在线观看免费| 最新精品亚洲成a人在线观看| 一级毛片在线免费播放| 亚洲国产成人久久综合一区77 | 热99re久久免费视精品频软件| 亚洲人妖女同在线播放| 久久国内免费视频| 亚洲妇女熟BBW| 国产嫩草影院精品免费网址| 国产精品亚洲一区二区三区| 亚洲av再在线观看| 国产又黄又爽胸又大免费视频| 亚洲日韩精品无码一区二区三区| 美女被cao网站免费看在线看| 亚洲精品自产拍在线观看动漫| 在线观看免费中文视频| 亚洲人成色4444在线观看| 国产成人免费手机在线观看视频| 一级毛片在线完整免费观看| 亚洲丁香色婷婷综合欲色啪| 67194熟妇在线永久免费观看 | 一级做a爰全过程免费视频| 亚洲黄色在线播放| 日韩免费视频播播| 亚洲综合视频在线观看| 在线视频观看免费视频18| 亚洲AV无码国产剧情| 精品国产亚洲男女在线线电影 | 成人a视频片在线观看免费| 美女被艹免费视频| 亚洲国产老鸭窝一区二区三区| 无码少妇一区二区浪潮免费| 日韩精品视频在线观看免费| 亚洲天天做日日做天天欢毛片| 无码人妻精品一二三区免费| 国产精品美女久久久免费 | 亚洲成av人无码亚洲成av人|