Android第三方登錄

登陸

javaweb中如何去維持登陸狀態

1.登陸後 信息放入 session中
2.頁面內驗證session中是否有登陸信息
3.若是有,不須要再次登陸
4.若是沒有,跳轉登陸頁面
5.若是登陸後點擊註銷,刪除session中登陸信息,並清除頁面緩存(必要的)

javaweb中哪些狀況咱們的session會過時

1.過時-->很長時間沒有去訪問網站
2.主動關閉-->用處註銷
3.切換瀏覽器

手機端如何維持登陸狀態

  • 登陸成功以後,在成功的結果裏面會附加一個sessionKey/tokenKey的字段;

登陸成功以後,返回的sessionKey/tokenKey的做用

1.登陸登陸.須要保存sessionKey到sp-->保存sessionkey
2.判斷sessionKey是否存在sp中,存在,服務器判斷是否過時,過時,要求用戶從新登陸;
3.判斷sessionKey是否存在sp中,存在,服務器判斷是否過時,不過時,繼續走流程;
4.判斷sessionKey是否存在sp中,不存在,要求用戶登陸,登陸完成保存sessionkey;

驗證碼登陸/註冊

1.用戶填寫手機號,點擊發送驗證碼,發送請求把手機號傳到server
2.server調用短信平臺的接口知道`發送內容`,`發送對象`,完成短信的發送
3.用戶收到短信,獲得驗證碼,填寫驗證碼,發送請求把`手機號`,`驗證碼`上傳到server
4.server判斷咱們的`驗證碼是否正確`,`驗證是否過時`,根據不一樣的判斷,返回不一樣的結果

sharesdk短信驗證sdk

  • 1.註冊成爲開發者
  • 2.添加應用
  • 3.下載demo
    • SMSSDK-->lib工程
    • SMSSDKSample-->demo
  • 4.運行demo查看效果-->用模擬器會報錯
  • 5.集成到本身的應用裏面;

開發平臺

*開放平臺(Open Platform) 在軟件業和網絡中,開放平臺是指軟件系統經過公開其應用程序編程接口(API)或函數(function)來使外部的程序能夠增長該軟件系統的功能或使用該軟件系統的資源,而不須要更改該軟件系統的源代碼。 * 開發平臺的做用:提供功能,提供資源;php

qq登陸

  • 網址:http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD
  • 集成步驟(移動應用接入流程)
    • 1.註冊成爲開發者,登陸;
    • 2.點擊申請加入,建立應用;-->會分配appId,appKey
      • APP ID:1104072093
      • APP KEY:PzMWIM4GYZvxGRjd
    • 3.完善信息;
    • 4.下載demo.運行看效果;
    • 5.集成開發;
      • webview方式(老方式):受權的時候是跳到了一個webview上去受權
      • sso方式:若是手機裏面裝了qq.那就是單點登陸的形式.若是沒有裝qq,就是跳到webview這種老方式;
      • sso:單點登陸

第三方登陸

  • 用qq號/微信號/微博號去登陸本身的應用
  • 核心:就是拿到咱們accessToken;
  • 實際開發第三方登陸的協議:http://xxx?token=>xxx&type=x,token就是咱們受權以後返回的accessToken,type是爲了區分不一樣登陸渠道;

app步驟(app作的事情,實際開發,咱們能把我這裏的幾個步驟,就能夠完成開發工做)

* 1.發起受權請求,讓用戶受權 ok
* 2.用戶輸入帳號密碼,用戶受權成功 ok
* 3.處理受權結果.拿到accessToken ok
* 4.調用第三方登陸協議(本身公司定義的).完成第三方登陸 本身server定義的協議和騰訊沒有關係

server步驟(錦上添花的瞭解一下)

* 使用accessToken拿到用戶在`第三方平臺的惟一ID`;
    * 判斷`第三方平臺的惟一ID`是否存在咱們的用戶信息表中;
        * 存在:(以前使用qq號登錄過本身的系統)返回當前用戶的用戶信息
        * 不存在:(用戶尚未使用過此qq登錄過咱們的系統)
* 調用相關的接口,拿到nickname,郵箱,頭像(須要什麼拿取什麼);

accessToken傳遞到後臺,後臺的處理邏輯

accessToken是啥,幹嗎用?

  • 形象解釋:申請調兵-->皇帝贊成-->兵符-->開始調兵
  • 拿到用戶在第三方平臺的惟一的標識;
  • 獲取用戶的nickname,頭像,郵箱等其餘信息;

微博第三方登陸

  • 1.註冊成爲開發者
  • 2.建立應用:微博建立應用流程稍微麻煩一點.須要重點講一下
    • 須要上傳咱們keystore的簽名信息,使用簽名工具獲取,和微信支付相似;
    • 受權回調頁:隨便寫一個就能夠
  • 3.運行demo,查看一下.
  • 4.集成微博第三方登陸.
    • 1.拷貝jar包,或者關聯lib工程
    • 2.查看androidMinfest.xml
    • 3.尋找關鍵代碼

oauth

OAuth是一個開放標準,容許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯繫人列表),而無需將用戶名和密碼提供給第三方應用。java

oauth產生背景 -->舉例

oauth2.0受權流程

(A)用戶打開客戶端之後,客戶端要求用戶給予受權。
(B)用戶贊成給予客戶端受權。
(C)客戶端使用上一步得到的受權,向認證服務器(好比qq登陸,那就是騰訊)申請令牌。
(D)認證服務器對客戶端進行認證之後,確認無誤,贊成發放令牌。
(E)客戶端使用令牌,向資源服務器申請獲取資源。
(F)資源服務器確認令牌無誤,贊成向客戶端開放資源。

oauth2.0涉及的角色

(1) Third-party application:第三方應用程序,本文中又稱"客戶端"(client),即上一節例子中的"雲沖印"。
(2)HTTP service:HTTP服務提供商,本文中簡稱"服務提供商",即上一節例子中的Google。
(3)Resource Owner:資源全部者,本文中又稱"用戶"(user)。
(4)User Agent:用戶代理,本文中就是指瀏覽器。
(5)Authorization server:認證服務器,即服務提供商專門用來處理認證的服務器。
(6)Resource server:資源服務器,即服務提供商存放用戶生成的資源的服務器。它與認證服務器,能夠是同一臺服務器,也能夠是不一樣的服務器。

新浪微盤開發平臺

  • 1.建立應用-->分配appId,appSecret
  • 2.運行demo
  • 3.總體感知

 

經過新浪微盤受權再看oauth2.0

第一步:讓用戶受權
https://login.sina.com.cn/sso/logout.php?r=https%3A%2F%2Fauth.sina.com.cn%2Foauth2%2Fauthorize%3Fclient_id%3D3237555059%26redirect_uri%3Dhttp%253A%252F%252Fwww.itheima.com%26response_type%3Dcode%26display%3Dmobile&rand=1432687399
第二步:獲取code
請求url地址: https://auth.sina.com.cn/oauth2/authorize
請求方法是post:
請求參數:
client_id=3237555059&client_secret=2b6c964b071e2ecc28c1835628cc6901&grant_type=authorization_code&code=a9ad7e219c0c8d209ed4b4be48d3af82&redirect_uri=http%3A%2F%2Fwww.itheima.com
結果:重定向到回調地址傳入咱們的code
第三步:獲取咱們的accessToken
https://auth.sina.com.cn/oauth2/access_token

{ 「client_id」, appkey, 「client_secret」,appSecrect, 「grant_type」, 「authorization_code」, 「code」, code, 「redirect_uri」, 「回調地址」 };
結果:拿到accessToken/token


c00cc566623yk3e3x6rXZ3gOj5Jc5a62
05-27 00:54:33.252: I/System.out(1312): token: b682c066623yk3e2xJtU24kftMdc09a8

05-27 00:57:14.420: I/System.out(1388): token: c00cc566623yk3e3x6rXZ3gOj5Jc5a62

接下來能夠經過accessToken去獲取用戶其餘信息
https://api.weipan.cn/2/account/info?access_token=c00cc566623yk3e3x6rXZ3gOj5Jc5a62
相關文章
相關標籤/搜索