時間稍眾即逝,仿佛這一幕詭異的相似,但我已不是曾經那個少年。曾經以為自己是一個四肢發達,頭腦簡單的人,不過事實證明確實如此。經過自己對自己的開導,我決定痛改前非,今天開始要轉型成為一名學霸,讓優秀成為一種習慣。繼續為兒時吹著牛努力...
今天說一下我項目中用到的登錄流程(由于某些原因需要復習一下)。
如今市場上的登錄方式有很多種方式,今天我會主要說一下手機號登錄,微信登錄(第三方),qq登錄(第三方),微博登錄(第三方)。
我先來介紹一下手機號的登錄注冊,手機號登錄的流程非常簡單,主要思想就是:用戶輸入手機號碼,我們app端將得到的號碼傳給后臺,由后臺來判斷這個手機號碼有沒有在項目中注冊,如果有則代表的是用戶登錄,如果沒有則是新用戶注冊。之后,后臺會發送一個短信驗證碼給用戶,用戶可以通過這個驗證碼來進行校驗登錄,我們將用戶輸入的驗證碼傳送給后臺。這個時候后臺會給我們app端返回來一些信息,如:用戶token(在計算機身份認證中是令牌(臨時)的意思),名字,頭像,手機號等信息。在這里需要說明一下,登錄的關鍵在于登錄的安全性,所以在這里我們登錄應該進行一些處理。一般在開發時,后臺返回給app端的信息只返回一次,其中token這個參數比較重要,token是用來判斷用戶的唯一性(token是怎樣生成的:隨機生成的一組字符串),因為這個token后臺只會給app端返回一次。所以在用戶登錄成功后我們應該將這個token保存起來,方便在app端的其他功能上使用。token還有一個功能就是判斷是否多個人登錄同意個賬戶。到這里手機號登錄就說完了。
接下來說一下微信的第三方登錄,這個其實思路是和手機號一樣的,就是先要去看一下微信的開發文檔。這里和大家說一下,微信的第三方是需要付費的200大洋一年。微信登錄的大致思路是這樣的:首先我們需要在微信開放平臺上通過注冊得到微信授權的appid,接下來就可以放心大膽的開發了。首先是調起微信的第三方,這里我們要根據文檔上寫的去做就好了:
/**
- 注冊應用到微信
*/
public void regToWx() {
mWxApi = WXAPIFactory.createWXAPI(YHMApplication.getYhmApplicationContext(), APP_ID, true);
//將應用的app-id注冊到微信
mWxApi.registerApp(APP_ID);
}
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_demo_test";
mWxApi.sendReq(req);
這樣我們就可以調起微信了(注意:在用方法調微信的時候一定要將xml(清單文件)中的配置都配置好了后才可以調起:
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:label="@string/app_name"/> ) 接下來就是要接收微信給我們的回調了,這里我們需要創建一個包,包名為wxapi,在這個包的下面創建一個類WXEntryActivity。這個類要實現IWXAPIEventHandler的接口,這里會生成幾個方法,我們可以通過onResp(BaseResp baseResp)方法來接受回調后的結果,來進行下一步操作baseResp.errCode == BaseResp.ErrCode.ERR_OK 判讀是否成功調起,如果為真,那么接下來就是請求微信的url鏈接了,這里我們需要請求微信兩次。
第一次請求微信端:"https://api.weixin.qq.com/sns/oauth2/access_token";(微信授權)
請求鏈接目的:獲取微信accesstoken值,@param mBaseResp 授權成功返回值
需要的參數都有:
SendAuth.Resp sendResp = (SendAuth.Resp) mBaseResp;
CODE = sendResp.code;
HashMaphttpParams = new HashMap<>();
httpParams.put("appid", APP_ID);
httpParams.put("secret", SECRET);//這個參數是你應該知道的,微信提供的
httpParams.put("code", CODE);
//--------------------private static final String authorization_code = "authorization_code";
httpParams.put("grant_type", authorization_code);//這個微信也有注明
請求成功后,微信會返回這些字段:
public String access_token;
public int expires_in;
public String refresh_token;
public String openid;
public String scope;
public String unionid;
第二次請求微信端:"https://api.weixin.qq.com/sns/userinfo";(獲取微信用戶信息)
第二次請求目的:授權成功后,獲取微信用戶信息,微信用戶信息實體
請求需要的參數(是授權成功后得到的):
String ACCESS_TOKEN = mWxUserToken.access_token;
String OPENID = mWxUserToken.openid;
HashMapmParams = new HashMap<>();
mParams.put("access_token", ACCESS_TOKEN);
mParams.put("openid", OPENID);
請求成功后,微信會返回用戶信息的參數。接下來我們就可以請求我們自己的網絡了,我們將自己項目需要的字段傳送給后臺。后臺也會生成一個token和一些參數,我們只需進行保存就行了。
下面我來說一下微信第三方的坑: 微信登錄成功后會跳到一個界面,這個界面可能是你不需要的,那么你就需要來操作這個界面,微信成功后回調的界面就是WXEntryActivity,我們可以不在這個界面返回布局,這樣的話我們就會看到一個空白界面,接下來我們可以在回調成功的方法里finish()掉微信返回的界面。注:如果調不起來微信一定要查看你的清單文件有沒有配置,并且需仔細查看文檔。
希望可以幫助到需要的朋友們,本人qq:176622729