2016-07-22 91 views
1

我想創建一個Yii2 rest api,供移動應用程序使用。移動應用程序/ Yii2 Rest api和Facebook登錄

用戶應該在應用程序中使用Facebook帳戶登錄並獲得對其餘api的訪問權限。

在我的數據庫中,我有默認的Yii用戶表,有一個額外的列:TOKEN char(32)。

我到目前爲止所做的: 手機: 1 - 用戶打開移動應用程序; 2 - 使用Facebook帳戶登錄;

Yii2 Framework: 1 - 創建yii2 rest api,基於:http://budiirawan.com/setup-restful-api-yii2/(返回國家/地區);

但是,接下來呢?

首爾我從Facebook收到一個令牌? 發送此令牌給我的休息Api?怎麼樣?我必須使用:在用戶模型中實現的findIdentityByAccessToken? 我是否必須將此令牌保存在用戶表中? 這個令牌是由facebook靜態返回的,還是臨時的? 我應該比較用戶權限,只使用這個令牌使用SSL?或者我必須在我的Yii環境中使用Ouath2? Facebook Facebook已經做了這個驗證,我不知道。

謝謝大家。

回答

0

我曾經歷過一次相同的場景。我所做的是:

  1. 讓你的用戶登錄到你的Yii網站,並讓他連接他的Facebook帳戶從設置面板。獲取訪問令牌,到期時間,Facebook ID等,並將其存儲在某個表中,並映射到用戶ID和電子郵件ID。
  2. 現在您可以訪問您的用戶令牌。讓用戶登錄到您的移動應用程序。讓他通過Facebook登錄。登錄後獲取訪問令牌。
  3. 現在通過api調用發送每個請求的token並在Yii應用中使用此令牌,獲取用此令牌調用Facebook SDK的用戶詳細信息。如果令牌有效,您將獲得帶有電子郵件ID,Facebook ID等的用戶配置文件。
  4. 檢查表中的電子郵件或Facebook ID,看看是否存在任何用戶。如果用戶存在,這意味着他是授權用戶並處理請求並用數據迴應。如果用戶不存在,那意味着他沒有連接他的賬戶,或者他試圖通過無效的Facebook賬戶登錄。
  5. 此外,將訪問令牌存儲在您的應用程序本地,並在Yii服務器上驗證每個請求是否已過期。如果過期,請發送一些響應來識別操作並從您的應用獲取新的訪問令牌。

上面的解決方案對我來說就像一個魅力。一探究竟。 您也可以爲您現有的Yii應用程序設置自己的Outh 2.0服務器。請查看這些links

希望這可以幫助你(或)某人。 :)