2012-01-05 45 views
13

Tôi muốn sử dụng Google OAuth trong ứng dụng CakePHP để cho phép người dùng đăng nhập bằng tài khoản google của họ. Tôi đã xem xét thành phần sau: http://code.42dh.com/oauth/. Bằng cách nào đó tôi không thể làm cho nó hoạt động được. Tôi không biết mình đang làm gì sai. Tôi đã đăng ký đơn đăng ký của mình trên biểu mẫu đăng ký Google và nhận khóa Người tiêu dùng và bí mật của Người tiêu dùng. Tôi đã thêm nó vào thành phần người tiêu dùng. Tôi vẫn không làm cho nó hoạt động.CakePHP OAuth với Google

Đây là mã của tôi:

<?php 

class ExampleController extends AppController { 
public $uses = array(); 
var $helpers = array('Javascript', 'Ajax'); 
public $components = array('OauthConsumer'); 

public function google() { 

    $scope = "https://www.google.com/m8/feeds/"; 
    $REQUEST_TOKEN_URL = 'https://www.google.com/accounts/OAuthGetRequestToken?scope=' . urlencode($scope); 

    $requestToken = $this->OauthConsumer->getRequestToken('Google', $REQUEST_TOKEN_URL, 'http://mydomain.com/example/google_callback'); 
    $this->Session->write('google_request_token', $requestToken); 
    $this->redirect('https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=' . $requestToken->key); 
} 

public function google_callback() { 
    $requestToken = $this->Session->read('google_request_token'); 
    $accessToken = $this->OauthConsumer->getAccessToken('Google', 'https://www.google.com/accounts/OAuthGetAccessToken', $requestToken); 

} 
} 

?> 

Khi tôi cố gắng yêu cầu requestToken tôi nhận được answes: "Chữ ký không hợp lệ".

Có ai đó sử dụng Google OAuth trong ứng dụng CakePHP của họ và sẽ sẵn sàng cho tôi một số mẹo không?

Trả lời

6

Tôi nghĩ rằng vấn đề là chuỗi truy vấn trong url mã thông báo yêu cầu. Hãy thử như sau:

$REQUEST_TOKEN_URL = 'https://www.google.com/accounts/OAuthGetRequestToken'; 
$requestToken = $this->OauthConsumer->getRequestToken('Google', $REQUEST_TOKEN_URL, 'http://mydomain.com/example/google_callback', 'GET', array('scope' => 'https://www.google.com/m8/feeds')); 
0

Bạn quên API công cộng quan trọng Access và url referers phép kết nối với ID cliend của bạn và khóa bí mật ...

Tạo một truy cập API công cộng, và thêm nó vào các thiết lập của bạn .

Các vấn đề liên quan