0

我正在學習Prestashop的發展。我試圖用react.js(更精確的React Native)創建一個「第三方」應用程序,並在prestashop的web服務中捕獲Json數據。但我想讓「客戶」使用他自己的賬戶和他的賬戶進行登錄。與CRUD也。是否可以通過客戶端(客戶)登錄來訪問Prestashop的Web服務而不是密鑰?

提前;非常感謝您的耐心和關注。

最好的問候。

米歇爾DIZ

+0

我發現這個(但是不夠)http://stackoverflow.com/questions/28724731/how-to-integrate-prestashop-with-android/28925554?newreg=e51eb8f5ed03430f80392eef2a983df0 –

+0

請告訴我們你有什麼迄今爲止嘗試過。堆棧溢出不是一種代碼編寫服務,但如果你至少試圖自己解決問題,人們願意幫助你。請參閱[如何創建一個最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)和[我如何提出一個好問題](http://stackoverflow.com/help/如何對問)? – sarcom

+0

其實這只是一個問題。我不是要求爲我執行代碼。我問是否有可能,如果有人知道我在哪裏找到信息。但是我會組織一個邏輯代碼參數來看看是否有人抓住它。 最好的問候。 –

回答

0

的Prestashop後臺登錄給web服務的訪問權限。必須啓用Webservices並生成密鑰。所以,我建議你改變你的「登錄」方式。客戶帳戶與Web服務無關,Web服務僅用於訪問存儲的數據Un Prestashop(更像Backoffice而不是FrontOffice)。

你到底需要做什麼?

我希望它能幫助你。

+0

我對此有所瞭解。 我正在考慮嘗試使用Firebase身份驗證。 在我正在考慮集成我在React Native中製作的當前測試應用程序之前。然後通過Prestashop的Web服務中生成的Json來消費所有的東西。 –

+0

在我的測試應用程序中,我正在考慮在代碼中執行一系列操作。首先使用生成的密鑰來使用Web服務,然後在通過一些實體驗證確認後過濾用戶。但是現在我想嘗試Firebase身份驗證。 –

+0

所有Prestashop API文檔在這裏:http://doc.prestashop.com/display/PS16/Using+the+PrestaShop+Web+Service – PixelWeb

0

我不知道你是否仍在尋找解決方案,但實際上有一種方法。

請確保它是安全登錄。

由於您允許訪問所有prestashop數據,請確保登錄非常安全。我已經能夠用PHP重新創建它我認爲有了一些補充,你可以按照你想要的方式重新創建它。將其作爲指導。

要使用的Prestashop Web服務創建一個登錄系統,您將需要三樣東西

通過網絡服務來爲客戶表 的COOKIE_KEY,在app/config中定義的訪問 - > parameters.php ::「cookie_key」 =>'12321test'; PHP 一些有效首先是從web服務獲取customers表。

// code placeholder 
require_once('./../PSWebServiceLibrary.php'); 

/** 
* get information from PrestaShop 
*/ 

$webService = new PrestaShopWebservice($url, $key, $debug); 

$COOKIE_KEY = 'CookieKey'; 
$email = $_REQUEST['email']; 
$password = $_REQUEST['password']; 

$optUser = array(
    'resource' => 'customers', 
    'filter[email]' => '[' . $email . ']', 
    'display' => '[id,email,lastname,firstname,passwd]' 
); 

$resultUser = ($webService->get($optUser)); 

$json = json_encode($resultUser); 

第二,也是最重要的事情是檢查用戶輸入

// code placeholder 

foreach ($resultUser->customers->customer as $info) { 
    // Prestashop uses the cookie_key in combination with a salt key. To check the password use the php function: password_verify(); 
    $salt = substr($info->passwd, strrpos($info->passwd, ':') + 1, 2); 
    $ZCpassword = md5($COOKIE_KEY . $password) . ':' . $salt; 

    // Check if password comparison is true or false 
    if (password_verify($password, $info->passwd) == true) { 
     session_start(); 
     $response = array(); 
     $response['status'] = 'succes'; 
     $response['message'] = "You did it!"; 
     setcookie("userId", $info->id); 
     header('Content-type: application/json'); 
     echo json_encode($response); 
    } else { 
     $response = array(); 
     $response['status'] = 'error'; 
     $response['message'] = 'Wrong password'; 
     header('Content-type: application/json'); 
     echo json_encode($response); 
    } 
} 

這是如何重現問題的工作示例。

希望這會有所幫助!

+0

非常感謝您的回覆。目前我無法測試你的方法,因爲在此期間我徹底改變了我的堆棧。不過,我可以儘快重新測試。 如果有人拿走你的代碼並繼續。提供積極的結果我會將您的答覆標記爲解決方案。 稍後在這個問題上,我在這裏做了一個小節點GraphQL API,它作爲prestashop數據庫的「橋」直接使用,並作爲sequelize使用。但是,我不得不停下來,因爲我需要開展另一個項目。 看着它在我看來是一個很好的方法。 反正謝謝你。乾杯 –