關於接入新浪微博第三方登錄


  近期,做一個關於聯合第三方平台的登錄接入,初次接觸開放平台,在此做個筆記

  開發之前的准備如下:

  1、注冊新浪微博

  2、訪問新浪微博開發平台http://open.weibo.com,如果是企業,申請企業接入,並提交相關資料進行審核;如果是個人開發者,就請申請個人開發者應用,一下以開發者為例

  3、使用新浪微博的開放API,就需要跟新浪申請一個appkey和App Secret,這個是入口,必須獲取到這兩個才能進行接下來的接入工作

  4、進入http://open.weibo.com完善個人信息之后,必須還要做完身份認證審核,審核完成之后,新浪開放平台就會給出appkey和App Secret

  5、接下來就是如何使用appkey和App Secret了,需要去下載開放平台中文檔或者是demo代碼,其實提供的文檔基本都是技術文檔,很多東西沒有講清楚,對於初次接觸的人,還是會遇到很多麻煩

  6、新浪開放平台提供了很多不同開發語言的sdk,這里我選擇java sdk,下載一個(包含新版接口及OAuth2.0)的zip文件,解壓之后可以直接import到eclipse中去,結構如下,包括weibo4j源代碼和example代   碼

  

  這里有一個config配置文件,打開如下:

  

  之前我們申請的appkey和App Secret就派上用場了,這里的client_ID就是appkey,client_SERCRET就是App Secret,把相應的內容填上去,另外redirect_URI這就是回調地址,

  點擊“第三方”——》跳轉微博登陸——》登錄ok,授權——》回調自己的應用,這里就是回調地址的意思了。

  7、開始去運行測試程序,測試程序在example下,包weibo4j.examples.oauth2下的類OAuth4Code,這里我們需要做一些修改,修改程序中的

  oauth.authorize("code",args[0],args[1]),將這段改成oauth.authorize("code","","all"),至於為什么這么改,這里請閱讀接口文檔oauth.authorize的使用說明

  假設這里我們還沒有回調地址,配置文件中的redirect_URI為空,運行之后,他會自動打開瀏覽器運行測試,顯示如下:

  

  此時的URL地址為:https://api.weibo.com/oauth2/authorize?client_id=3613929600&redirect_uri=&response_type=code&state=&scope=all

  這里說明我的appkey和App Secret是有效的,這里由於我們沒有創建正式的應用,新浪無法識別我的來源

  8、在開放平台上創建應用,如下圖所示

  

  這里有三類應用,網站接入、站內應用、移動應用,如果是企業行為,有公開的域名可以訪問,並且應用程序是通過域名進行訪問,這里任何一種方式都可以用,但如果我們只是簡單開發者,沒有公用域名,比如是內  部局域網模式,ip為內網地址192.168.1.*開頭,本地127.0.0.1之類的,這里就只能選擇創建站內應用,填寫如下

  

  這里紅色框標記的地方就是回調地址,如果我沒有公網ip和域名,局域網玩玩就這么填寫就ok了,不過這里不能用localhost代替127.0.0.1,這里按照配置要求完成,這個配置里面的要求是很嚴謹的,

  特別是下面的幾個應用圖標,總之比較麻煩,這里結束了之后,就可以提交審核了。

  9、提交審核之后,第一次大約1天時間,新浪開放平台就會發郵件到你的郵箱,告知你審核結果,不過這里審核結果失敗與否沒有關系,關鍵就是要提交審核,沒有審核成功,這里照常可以用

  

  10、完成測試工程中的配置文件redirect_URI,這里必須與創建應用時填寫的【應用實際地址】保持一致,這就是回調地址!完成配置之后,再次運行OAuth4Code.java,如圖所示

  

  這里就跳轉到新浪微博的登錄頁面,登錄新浪微博的賬戶之后,就需要點擊授權,表示你的微博帳號相關內容可以被接入的平台分享你的信息等等,授權結束之后,

  會返回一個code,這個code非常重要,就是我們整個接入第三方平台的開門鑰匙,有這個code之后,我們就可以獲取用戶的access_token,UID等內容,就相當於整個接入過程打通了,

  11、調用新浪微博的開放API

  這里就需要研讀這些API了,從而滿足接入要實現的需求了,首先要熟悉的就是OAuth 2.0授權接口,http://open.weibo.com上都可以查,如下:

  

  12、通過一個Servlet程序調用開放API獲取新浪微博的UID、微博名稱示例  

response.setContentType("text/html;charset=UTF-8");
        String accessToken = null ;
        String uid = null ;
        String screenName = null ;        
        String username = null ;
        AccessToken accessTokenObj = null ;
        Oauth oauth2 = new Oauth();
        try {
            out = response.getWriter();
            accessTokenObj = oauth2.getAccessTokenByCode(code) ;
            logger.info(accessTokenObj);
            accessToken = accessTokenObj.getAccessToken() ;
            oauth2.setToken(accessToken) ;
            Account account = new Account() ;
            account.client.setToken(accessToken) ;
            JSONObject uidJson = account.getUid() ;
            uid = uidJson.getString("uid") ;
            
            Users users = new Users() ;
            users.client.setToken(accessToken) ;
            User weiboUser = users.showUserById(uid) ;
            username = weiboUser.getName() ;
            screenName = weiboUser.getScreenName() ;
            
            
        } catch (WeiboException | IOException | JSONException e) {
            e.printStackTrace();
        }
        out.println("微博訪問Token_Info:" + accessTokenObj + "\t");
        out.println("微博訪問Token:" + accessToken + "\t");
        out.println("微博用戶-Uid:" + uid + "\t");
        out.println("微博用戶-名稱:" + screenName + "\t");
        out.flush();
        out.close();*/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM