Hướng dẫn php oauth 1.0 library - thư viện php oauth 1.0

Tôi đang làm việc với API OAuth 1.0 yêu cầu chúng tôi sử dụng khóa/cặp API. Ngoài ra, nó cho tôi 3 URL:

  • Yêu cầu mã thông báo điểm cuối: /oauth /request_token
  • Điểm cuối ủy quyền: /oauth /ủy quyền
  • Truy cập điểm cuối mã thông báo: /oauth /access_token

Đây là những gì các tài liệu nêu rõ:


Chúng tôi sử dụng đặc điểm kỹ thuật mới nhất của Giao thức OAuth 1.0 (RFC 5849) để xác thực các yêu cầu API của chúng tôi. Chúng tôi sử dụng OAuth 1.0 vì nó là một tiêu chuẩn mở và chúng tôi điều chỉnh luồng giao thức khách hàng/người dùng/máy chủ/ba chân "của OAuth 1.0 thành mô hình máy khách/máy chủ" hai chân ". Trong việc điều chỉnh OAuth cho các yêu cầu máy khách/máy chủ được xác thực, máy khách hoạt động như cả máy khách API và người dùng (tức là, chủ sở hữu của tài nguyên được yêu cầu). Vì vậy, thay vì được chuyển hướng đến máy khách với bộ xác minh mã thông báo, máy khách hoạt động như người dùng và trực tiếp truy cập máy chủ cho trình xác minh OAuth. Kiểm tra khả năng truy cập xảy ra khi máy khách yêu cầu tài nguyên từ máy chủ có mã thông báo truy cập thu được bằng trình xác minh thu được trước đó. Bạn có thể sử dụng lại mã thông báo truy cập cho đến khi chúng hết hạn (sau hai giờ). Sau khi hết hạn, bạn phải yêu cầu mã thông báo truy cập mới. Ví dụ sẽ làm rõ điều này hơn nữa.we adapt the "three-legged" client/user/server protocol flow of OAuth 1.0 to a "two-legged" client/server model. In our adaptation of OAuth for authenticated client/server requests, the client acts as both the API client and the user (i.e., owner of the requested resource). So, instead of being redirected to the client with a token verifier, the client acts as a user and directly accesses the server for the OAuth verifier. The accessibility check happens when the client requests a resource from the server with an access token obtained using the previously obtained verifier. You can reuse access tokens until they expire (after two hours). After the tokens expire, you must request a new access token. Examples will clarify this further.


Tôi muốn tìm một thư viện PHP OAuth có thể sử dụng các yêu cầu API mà tôi có để truy cập API của công ty bên thứ ba. Tôi thực sự không biết làm thế nào để thực hiện điều này. Suy nghĩ hiện tại của tôi là đảo ngược kỹ sư API PHP Facebook nhưng tôi không biết liệu nó có sử dụng 3 điểm cuối không. Ngoài ra, một số trợ giúp trong việc vận hành nó hoặc hướng tôi đến một tài nguyên nơi tôi có thể tự mình tìm ra nó sẽ rất tuyệt.

Thanks!

** Lưu ý: Tôi đã tìm thấy điều này: Bấm vào đây đây có thể là giải pháp tôi đang tìm kiếm không?

Đã hỏi ngày 6 tháng 7 năm 2013 lúc 16:26Jul 6, 2013 at 16:26

Hướng dẫn php oauth 1.0 library - thư viện php oauth 1.0

somejkusersomejkusersomejkuser

8.75619 Huy hiệu vàng60 Huy hiệu bạc124 Huy hiệu đồng19 gold badges60 silver badges124 bronze badges

Facebook sử dụng OAuth 2.0 vì vậy API đã ra khỏi câu hỏi. Kiểm tra tại đây để biết một số tài liệu tham khảo API cơ bản - ví dụ như Bitbucket, Twitter và Yahoo đều sử dụng v1.0a.

PHP có tiện ích mở rộng OAuth, vì vậy nếu bạn đang xây dựng một giải pháp tùy chỉnh, bạn chắc chắn nên bắt đầu ở đó. Thư viện mà bạn tham khảo sẽ cung cấp hai chân OAuth, vì vậy trong cái nhìn đầu tiên, nó dường như là một lựa chọn cho bạn. Tuyên bố miễn trừ trách nhiệm về câu cuối cùng: Tôi chưa sử dụng thư viện này tuy nhiên tôi đã kiểm tra tài liệu. Một lời giải thích tốt đẹp với biểu đồ trình tự UML có thể được tìm thấy ở đây. Nó chỉ là OAuth chung không phải là PHP cụ thể nhưng không cung cấp một lời giải thích sâu sắc. REPO GitHub này chứa các máy khách có thể tái sử dụng cho các dịch vụ của tôi - bạn cũng có thể nhận được một số ý tưởng từ đó nếu khách hàng của bạn sẽ là PHP.clients for my services - you can also get some ideas from there if your clients are going to be PHP.

Trường hợp của bạn có vẻ rất thú vị và không có câu trả lời đầy đủ cho câu hỏi của bạn. Nếu tôi là bạn, trước tiên tôi sẽ dành thời gian để kiểm tra mã phía sau thư viện Google Code oauth-php mà bạn tham khảo trong phần hai chân (và không chỉ). Sau đó, quyết định xem thực tế bạn nên sử dụng thư viện này, một triển khai khác hoặc tùy chỉnh. Bạn cũng có thể có các yêu cầu/showstoppers khác có thể ảnh hưởng đến quyết định của bạn (tôi biết bạn sẽ muốn đẩy một số lượng dữ liệu lớn từ câu hỏi khác của bạn.;)) của một hợp đồng xác thực/ủy quyền?

Đã trả lời ngày 6 tháng 7 năm 2013 lúc 20:38Jul 6, 2013 at 20:38

Borislav Sabevborislav SabevBorislav Sabev

4.7461 Huy hiệu vàng22 Huy hiệu bạc 30 Huy hiệu Đồng1 gold badge22 silver badges30 bronze badges

oauth-php-lib

Thư viện này đã được triển khai từ các tài liệu chính thức để hiểu toàn bộ giao thức.

Nó chủ yếu nhằm mục đích sử dụng sư phạm và học tập.

Hướng dẫn php oauth 1.0 library - thư viện php oauth 1.0

Ví dụ

Chạy cài đặt trình soạn thảo để nhận được phụ thuộc và tự động tải:

Thiết lập máy chủ web của bạn để có 3 trang web trên 3 máy chủ riêng biệt:

  • Máy chủ OAuth 1.0 của bạn: Ví dụ/OAuth2.0-server/
  • Máy chủ OAuth 2.0 của bạn: Ví dụ/OAuth2.0-server/
  • Khách hàng kiểm tra của bạn: Ví dụ/Khách hàng/

Trong tệp ví dụ/client/index.php, thay thế OAuth (1.0 | 2.0). Máy chủ lưu trữ bằng máy chủ máy chủ thực tế của bạn được tạo trước đó.

Đối với mục đích thử nghiệm, những ví dụ này đang sử dụng phiên làm lưu trữ dữ liệu không bao giờ được sử dụng trong sản xuất! Bạn có thể thay đổi các tệp trong các ví dụ/ src/ và tạo máy chủ và lưu trữ dữ liệu của riêng bạn dựa vào cơ sở dữ liệu.
You can change the files in examples/src/ and create your own server and data store relying on a database.

Người phục vụ

Để thiết lập một máy chủ, chỉ cần tạo một lớp con của OAuth2apiserver hoặc OAuth2Apiserver tùy thuộc vào phiên bản bạn dự định sử dụng.

Bạn sẽ phải triển khai lưu trữ dữ liệu trên cơ sở dữ liệu của riêng bạn để có được một máy chủ làm việc.



/**
 * OAuth 2.0 Server example 
 */

use DevSeb\OAuthPhpLib\OAuth\OAuthAccessToken;
use DevSeb\OAuthPhpLib\OAuth\OAuthConsumer;
use DevSeb\OAuthPhpLib\OAuth\OAuthRefreshToken;
use DevSeb\OAuthPhpLib\OAuth\OAuthRequestToken;
use DevSeb\OAuthPhpLib\OAuth\OAuthToken;
use DevSeb\OAuthPhpLib\Server\OAuth2ApiServer;
use DevSeb\OAuthPhpLib\Client\HttpRequest;

class MyOAuth2ApiServer extends OAuth2ApiServer
{
    public function __construct(HttpRequest $Request)
    {
        parent::__construct($Request);
    }
        
    //================================================================================================
    // OAuth2ApiServer implementation
    
    // TODO: implement Data Store

    protected function getConsumer($consumerKey){}
    protected function getConsumerFromToken($tokenKey){}
    protected function getToken(OAuthConsumer $Consumer, $tokenKey, $tokenType){}
    protected function newRequestToken(OAuthConsumer $Consumer, $redirectUri = ''){}
    protected function newAccessToken(OAuthConsumer $Consumer, OAuthRequestToken $RequestToken = null, OAuthRefreshToken $RefreshToken = null){}
    protected function newRefreshToken(OAuthConsumer $Consumer, OAuthAccessToken $RequestToken = null){}
    protected function showLoginPage(){}
    protected function authenticateUser(OAuthConsumer $Consumer, $username, $password){}    
    
}
?>

Khách hàng

Thư viện máy khách có thể được sử dụng với bất kỳ máy chủ OAuth nào. Trong ví dụ dưới đây, thay thế các giá trị giả của trường hợp trên:



/**
 * 3-legged OAuth 2.0 Client example
 */

use DevSeb\OAuthPhpLib\Client\OAuth2ApiClient;
use DevSeb\OAuthPhpLib\OAuth\OAuthRequest;
use DevSeb\OAuthPhpLib\OAuth\OAuthAccessToken;
use DevSeb\OAuthPhpLib\OAuth\OAuthRequestToken;
use DevSeb\OAuthPhpLib\OAuth\OAuthConsumer;

$Consumer = new OAuthConsumer('API_CONSUMER_KEY', 'API_CONSUMER_SECRET');

$Client = new OAuth2ApiClient('API_URL', $Consumer);

// Authenticate user
$Client->authenticate('AUTHENTICATION_CALLBACK_URL', 'scope', 'state');

// => redirect to authentication page
// ... authenticate 
// <= redirect to callback URL with code

// Get RequestToken
$requestToken = $_GET['code'];

// Get AccessToken and RefreshToken from RequestToken
$RequestToken = new OAuthRequestToken($requestToken);
list($AccessToken, $RefreshToken) = $Client->getAccessTokenFromAuthorizationCode($RequestToken);

// Call API using AccessToken
$Request = new OAuthRequest('API_URL');
$Response = $Client->getOAuthResponse($Request, $AccessToken);
var_dump($Response->getBody());

?>

Tài liệu

API PHP được ghi lại trong doc/index.html

Mô tả cơ bản về các luồng khác nhau tùy thuộc vào phiên bản OAuth và cách sử dụng như sau:

OAuth 1.0a

Tài liệu chính thức: https://oauth.net/core/1.0a/

1 chân OAuth 1.0a:

  Consumer                          Server
       1. Request access token
     |-------------------------------->|
       2. Issue an access token
     |<--------------------------------|
       3. Call protected API
     |-------------------------------->|
       4. Send response
     |<--------------------------------|

2 chân OAuth 1.0a:

  Consumer                          Server
       1. Request a token
     |-------------------------------->|
       2. Issue a request token
     |<--------------------------------|
       3. Request access token
     |-------------------------------->|
       4. Issue an access token
     |<--------------------------------|
       5. Call protected API
     |-------------------------------->|
       6. Send response
     |<--------------------------------|

3 chân OAuth 1.0a:

   Browser                 Consumer                    Server
                                 1. Request a token
                               |------------------------->|
                                 2. Issue a request token
                               |<-------------------------|
     3. Redirect to auth page
   |<--------------------------|
                  4. Grant access to consumer
   |----------------------------------------------------->|
                  5. Confirm user authorization
   |<-----------------------------------------------------|
     6. Redirect to callback
   |-------------------------->|
                                 7. Request access token
                               |------------------------->|
                                 8. Issue an access token
                               |<-------------------------|
                                 9. Call protected API
                               |------------------------->|
                                 10. Send response
                               |<-------------------------|

OAuth 2.0

Tài liệu chính thức: https://oauth.net/2/

OAuth 2 chân 2.0:

  Consumer                          Server
       1. Request access token
     |-------------------------------->|
       2. Issue an access token
     |<--------------------------------|
       3. Call protected API
     |-------------------------------->|
       4. Send response
     |<--------------------------------|

3 chân OAuth 2.0:

   Browser                 Consumer                    Server
      1. Redirect to auth page
   |<--------------------------|
                  2. Grant access to customer
   |----------------------------------------------------->|
                  3. Confirm user authorization
   |<-----------------------------------------------------|
     4. Redirect to callback
   |-------------------------->|
                                 5. Request access token
                               |------------------------->|
                                 6. Issue an access token
                               |<-------------------------|
                                 7. Call protected API
                               |------------------------->|
                                 8. Send response
                               |<-------------------------|