2013-04-11 63 views
3

我想圍繞所有這個「以api爲中心」的概念,並以某種方式,由於各種原因(在翻轉SO後顛倒),我無法找到答案我自己的,所以我希望你能幫助我:)創建一個以Api爲中心的應用程序,我自己的疑惑

在這裏,作爲個人項目的一部分,我需要創建一個像社交應用程序網站的東西,我說「like」,因爲它只是一個小項目,沒有任何東西太花哨。

我想到的想法是我創建了一個休息服務,像http://api.domain.com/v1/這樣的資源(創建/刪除/更新/讀取)所需的所有方法。

現在,在創建此服務之後,我需要創建我的網站,例如http://www.domain.com/,並且此網站將與我的api.domain.com進行通信,以進行每項操作。如果新用戶註冊,則將數據發送到api服務器,處理它,返回答案等。

然後,在創建網站後,我打算使用phonegap爲iphone和android創建原生應用程序。這些移動應用程序基本上就像我的網站一樣,連接到api服務器並執行各種操作。

這很簡單,如果沒有授權,所以任何知道api端點的人都可以管理所有的資源,就像你猜測的那樣,我不想要,所以我必須實現某種的授權機制,我不確定要使用什麼。 我在考慮實現OAuth2,以便我的api充當oauth提供者,然後我的網站/移動應用將連接到api,獲得授權,然後完成他們的工作。 這是一個很好的方法,有什麼想法嗎?

接下來,假設我堅持使用oauth並且一切正常,如果我想讓用戶有機會創建自己的應用程序以訪問有關其他用戶/或他們自己數據的信息(基本上我有公共api,爲什麼不利用它),那麼安裝應用程序的用戶需要批准才能訪問他的信息。我知道這是可能的oauth(因爲facebook/twitter /別人這樣做),問題是,我如何區分簡單的用戶創建的應用程序和我自己的應用程序(如網站和移動應用程序)?這種分離是通過在請求permssions時提供各種「範圍」來實現的嗎? 如果不是,我應該使用其他方法?

我對oauth沒有太多的經驗,所以也許有些問題有點不對,希望你能明白我的問題。

如果有幫助,我將使用PHP 5.4與Yii框架,Apache 2(mod ssl available),MySQL。

謝謝:)

回答

0

Yii提供CWebService(SOAP),您可以使用,或甚至創建自己的REST API。

我自己創建了一個API,就像你想要做的一樣。

爲安全起見,我與一個API,用戶名和使用CUserIdentity一個API密碼登錄:

if (Yii::app()->apiuser->isGuest) { 

       if (!empty($_POST['apiUser']) && !empty($_POST['apiPassword'])) { 

       $identity = new ApiUserIdentity($_POST['apiUser'],$_POST['apiPassword']); 
       $identity->authenticate(); 

       if($identity->errorCode===ApiUserIdentity::ERROR_NONE) 
       { 

        Yii::app()->apiuser->login($identity); // Login for 30 minutes 
        $responseData['success'] = 1; 
        $responseData['sessionId'] = Yii::app()->session->sessionID; 

       } else { 

        $responseData['error'] = 'Incorrect username and/or password'; 

       } 

       } 

      } 

的POST數據從應用程序來使用它的API。 SessionId被傳遞迴應用程序,因此不需要下一次登錄。如果您使用捲曲,使API請求,您可以使用發送會話ID回到下一個API請求:

$strCookie = "PHPSESSID=".$sessionId."; path=/"; 
// Set the COOKIE files 
curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
curl_setopt($ch, CURLOPT_COOKIE, $strCookie); 

這樣的會話保持每一個請求。

+0

是的,但這打破了所有的REST代表,它不是無國籍了,因爲你使用會話來保持用戶登錄。 – Twisted1919 2013-08-29 17:05:29

相關問題