接入Facebook登錄真的好方便窖梁,不需要像微信登錄那樣還要做開發(fā)者資質(zhì)認(rèn)證。參考下面這兩篇文章就可以搞明白怎么操作挡逼。
- 在iOS工程中集成facebook第三方登錄,給出了一個非常好的demo错邦。
- iOS集成facebook實(shí)現(xiàn)自動登錄
總結(jié)流程如下。
- 創(chuàng)建App型宙,填寫相關(guān)信息撬呢。
- Add Platform。如果是iOS App妆兑,需要設(shè)置Bundle ID魂拦。
- Make App public。
接下來看看Facebook登錄的一些細(xì)節(jié)搁嗓。如果安裝了Facebook App的話芯勘,那么喚起Facebook App授權(quán),否則腺逛,在App里面打開SFSafariViewController登錄和授權(quán)荷愕。SFSafariViewController真好用啊,gmail也通過SFSafariViewController做登錄棍矛。
用戶授權(quán)之后安疗,F(xiàn)acebook喚起App的URL如下。這里可以看到access token够委。
fb1843069139350572://authorize/#state=%7B%22challenge%22%3A%22zrCrlaoLwdQkxNpNvA9ivqDs2UU%253D%22%2C%220_auth_logger_id%22%3A%22AB0468C8-74AF-43F9-B686-C7E8A63162E3%22%2C%22com.facebook.sdk_client_state%22%3Atrue%2C%223_method%22%3A%22sfvc_auth%22%7D
&granted_scopes=public_profile
&denied_scopes=
&signed_request=215mSYcJpCpfvZkF3QgwjdritOcUnxLENxPORXL_n-0.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImNvZGUiOiJBUUFHLWhSdFFxSUFRclA3UTRTZmEwNTQ1bmF3RlZZNjFxdGVicWljMkpNRG9WcUdQTTB0ME1qU0xqR01wcFZTektEcUM3d0ZNV1NfX05RR1Fid0F6QXpESmtsSjh3ckNEVVhvX1BsbERCRzZ0OU9KR09BaVFkYnNVVTFWMzZQNklPODJsQll4RDNHNzE5LTBZNlUtLXY1Q2xGMzJRejdLaXo5eE9YX214cVZySmNvc2JXVC1ib0pxeENBd2oxdVVuUUk2WTFkcV9kZ1d0T252eHRHZmtBc2E0LUV4VTdjeVRCMmE4bVk1SUt3ZFg4S0Z0M2lkYmZNbEFWNzJIZHBmejNzbEU2LXZJZndaX1JPUDVEV3F1THV6SC1ObGt5cENhZEFIekZSdjdzTEt2MWdKUVB6R1JxUVJWb1hhT09jS0Fsd25KakpQcktfX0R2X3ZrV2Vrc2tlaUZUcHNLYVdmbjNjanhCYUVnMEhhdFRtbnB5eWFPMUpCcWRDR1IyNU4xc296cnFLbjNXM2dPRHFURlpUY3ZXaFciLCJpc3N1ZWRfYXQiOjE0OTM2NTEyMDYsInVzZXJfaWQiOiIxMzg2NDA4OTExNDA1Nzk2In0
&access_token=EAAaMQvlY9CwBAK3S9ik33QvokMlZCwCx3ZBsPVR240AJXOwU0BTv304mdr4Qf5W7UMoJv15tWyfM75zrM3GZC2KEDcYWoZB4pduoMyWxh0fK3cTrFzLeQVOZC9RKWR6QZC82LovWGaV6Ye9zeNx5TPRXtMCeX9qH1G6NYZBJyXcNqBdTJlh4RLV0IJFsX87V5SmmoU0Lm0ZC4pwZBzVtio1pKtrupJJGKwP4ZD
&expires_in=5183508
&e2e=%7B%22init%22%3A377554.65378193%7D
上面URL里面有一個很有意思的字段荐类,那就是signed_request
,這個字符串的格式是:signature
+.
+base64url(JSON payload)
茁帽,這不是一個標(biāo)準(zhǔn)的JWT玉罐。在 https://jwt.io/ 里面可以decode出來,payload就是一個普通的JSON字符串潘拨。
更多關(guān)于signed_request
字段的介紹可以參看Facebook的文檔:https://developers.facebook.com/docs/reference/login/signed-request吊输。
最后App里面使用的token如下所示。access token跟上面URL里面的是一樣的战秋。token里面也是沒有refresh token的璧亚。fbsdk提供了FBSDKAccessTokenDidChangeNotification
通知用于告知用戶access token發(fā)生了變化,用戶并不需要關(guān)心access token的更新脂信。作為一個登錄SDK癣蟋,確實(shí)也沒有必要暴露refreshToken。
Facebook登錄簡化了獲取token的流程狰闪,用戶授權(quán)完成之后疯搅,返回source App,直接把URL交給FBSDKApplicationDelegate把后續(xù)流程全部完成了埋泵。微信登錄則需要開發(fā)者自己走完OAuth 2.0所有的流程幔欧,并且負(fù)責(zé)token的刷新罪治。
參考資料。