2011-11-25 10 views
16

Tôi đang cố gắng sử dụng API Google v3 để truy cập một lịch Google và theo tài liệu tại đây: http://code.google.com/apis/calendar/v3/using.html#intro và tại đây: https://code.google.com/apis/console/, giải pháp tôi cần là "Truy cập API đơn giản" & "Khóa ứng dụng máy chủ (có IP khóa) ".Tôi làm cách nào để sử dụng "Khóa truy cập API đơn giản" của Google để truy cập thông tin Lịch Google (PHP)?

Bây giờ, khi tôi tạo một trang với mã này:

session_start(); 

require_once 'fnc/google-api-php-client/src/apiClient.php'; 
require_once 'fnc/google-api-php-client/src/contrib/apiCalendarService.php'; 

$apiClient = new apiClient(); 
$apiClient->setUseObjects(true); 
$service = new apiCalendarService($apiClient); 

if (isset($_SESSION['oauth_access_token'])) {$apiClient->setAccessToken($_SESSION['oauth_access_token']); 
} else { 
    $token = $apiClient->authenticate(); 
    $_SESSION['oauth_access_token'] = $token; 
} 

và tôi tập tin "config.php" Tôi thêm CHỈ chính developper của tôi (ở vị trí của "X"):

global $apiConfig; 
$apiConfig = array(
    // True if objects should be returned by the service classes. 
    // False if associative arrays should be returned (default behavior). 
    'use_objects' => false, 

    // The application_name is included in the User-Agent HTTP header. 
    'application_name' => '', 

    // OAuth2 Settings, you can get these keys at https://code.google.com/apis/console 
    'oauth2_client_id' => '', 
    'oauth2_client_secret' => '', 
    'oauth2_redirect_uri' => '',  

    // The developer key, you get this at https://code.google.com/apis/console 
    'developer_key' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 

    // OAuth1 Settings. 
    // If you're using the apiOAuth auth class, it will use these values for the oauth consumer key and secret. 
    // See http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html for info on how to obtain those 
    'oauth_consumer_key' => 'anonymous', 
    'oauth_consumer_secret' => 'anonymous', 

Nhưng sau đó tôi nhận được lỗi và nó cho tôi biết nó đang cố gắng xác thực bằng cách sử dụng hệ thống "OAuth 2.0" mà tôi không muốn sử dụng. Tôi chỉ muốn truy cập một lịch bằng khóa API.

Và thật ngạc nhiên khi tôi tìm kiếm trong google "Khóa truy cập API đơn giản", tôi không tìm thấy gì, không có gì trên tài liệu của họ, không có ví dụ, không có hướng dẫn, không có gì. Tôi có phải là người duy nhất sử dụng thứ này không?

Vậy ai đó có thể cho tôi biết tôi đang làm gì sai?

+1

Tương tự ở đây ...... Bạn đã xoay sở để đến bất cứ đâu? – zaf

+0

Tương tự ở đây ... bất kỳ cập nhật nào? – redronin

+0

Ngoài sự tò mò - bạn đã thêm IP của máy chủ của mình vào danh sách các địa chỉ IP được phép trong hộp thoại "Truy cập API đơn giản" chưa? – gfppaste

Trả lời

1

Không có thứ như vậy được gọi là Simple API Access key.

Thông thường OAuth 2.0 được sử dụng để ủy quyền. Nhưng vì bạn có lý do của bạn không sử dụng nó.

  • Nếu bạn muốn sử dụng OAuth1.0 để ủy quyền. Bạn cần một phần API key trong mục Simple API Access trên trang API Access.
  • Nếu bạn muốn sử dụng tên người dùng & đăng nhập mật khẩu thay vì OAuth, bạn có thể tham khảo ClientLogin, nhưng điều này không được khuyến nghị.
+1

Bạn nói rằng không có điều đó, nhưng sau đó nói "nhận được một khóa api trong phần truy cập api đơn giản"? – Kevin

+0

Chỉ cần sử dụng "khóa API" để truy cập. Không có phím nào được gọi là "Khóa truy cập API đơn giản". – Rannnn

+0

Bạn có kiểm tra xem khóa API có thực sự cần thiết không? Tôi cho rằng thông tin trong https://developers.google.com/google-apps/calendar/auth xung đột với https://developers.google.com/accounts/docs/OAuth và tôi có thể truy vấn API lịch v3 mà không khóa API ở tất cả, chỉ với khóa người dùng và bí mật (OAuth1) – prusswan

-1

Xem liên kết dưới đây hữu ích cho bạn. Thư viện ứng dụng khách API của Google cho phép bạn làm việc với các API của Google như Analytics, Adsense, Google+, Lịch, Người kiểm duyệt, Công việc hoặc Latitude trên máy chủ của bạn, bằng ngôn ngữ bạn chọn.

http://code.google.com/p/google-api-php-client/

Cảm ơn, Chintu

+0

Điều này không trả lời được câu hỏi.Thư viện khách hàng API của Google là một cơn ác mộng đối với tích hợp đơn giản, 3mb thư viện cho một móc đơn giản ... –

5

(tôi biết đây là một câu hỏi cũ nhưng tôi sẽ đã vui mừng nếu một người nào đó đã đưa ra một câu trả lời thực sự ở đây vì vậy tôi đang làm nó bây giờ)


Tôi đã gặp vấn đề tương tự, truy cập API đơn giản không được ghi lại đầy đủ (hoặc có thể không phải nơi tôi đã tìm kiếm), nhưng sử dụng Google API Explorer tôi đã tìm được cách để có được những gì tôi cần. thực tế khá đơn giản. Bạn không cần lib cụ thể hoặc bất cứ điều gì: nó thực sự thực sự đơn giản.

Trong trường hợp của tôi, tôi chỉ đơn giản là cần thiết để tìm kiếm một từ khóa trên G +, vì vậy tôi chỉ phải làm một yêu cầu GET:

https://www.googleapis.com/plus/v1/activities?query={KEYWORD}&key={YOUR_API_KEY} 

Bây giờ, đối với một truy cập lịch (see here), chúng ta hãy giả vờ chúng tôi muốn lấy danh sách quy tắc kiểm soát truy cập.Chúng tôi cần phải tham khảo calendar.acl.list mà cho chúng ta những URI:

https://www.googleapis.com/calendar/v3/calendars/{CALENDAR_ID}/acl?key={YOUR_API_KEY} 

Điền vào chỗ trống, và đó là khá nhiều tất cả các bạn cần phải làm. Nhận được một server key (menu phụ Truy cập API), lưu trữ nó ở đâu đó trong dự án của bạn và gọi nó trong các URI mà bạn đang yêu cầu.

+0

Và đối với những người thắc mắc, Truy cập đơn giản thuộc nhóm mặc định, không phải là nhóm đăng nhập, có nghĩa là bạn bị giới hạn yêu cầu 10k mỗi ngày. – Tsadiq

+6

Tôi không thể làm cho nó hoạt động. tôi nhận được '{ "lỗi": { "lỗi": [ { "miền": "toàn cầu", "lý do": "yêu cầu", "message": "Login Required", "locationType" : "tiêu đề", "location": "Cho phép" } ], "code": 401, "message": "Login Required" }} ' nếu tôi có thể giải quyết đăng nhập này yêu cầu. Tôi có chìa khóa api, tôi đang truy cập từ ip i được ủy quyền. – AndreaBogazzi

3

Bạn không thể truy cập thông tin lịch của mình bằng cách sử dụng Khóa API. Khóa API (hoặc khóa API acess đơn giản) không phải là mã thông báo được ủy quyền và chỉ có thể được sử dụng cho một số lệnh gọi API chẳng hạn như truy vấn tìm kiếm của Google, v.v. Các khóa API sẽ không cho phép bạn truy cập bất kỳ dữ liệu cụ thể nào của người dùng, mà tôi giả sử là mục tiêu của bạn thông qua ứng dụng lịch này.

Ngoài ra, từ những gì tôi thấy trong mã của bạn, bạn đang tạo đối tượng khách hàng sẽ sử dụng xác thực OAuth 2.0 và do đó bạn nhận được thông báo lỗi xác thực.

0

Tôi đã chuyển sang chuỗi này khi cố gắng thực hiện tương tự ngay hôm nay. Mặc dù đây là cách trễ, nhưng câu trả lời là CÓ, thực sự là API khóa đơn giản cho những apis không cần ủy quyền người dùng và thư viện máy khách chính thức hỗ trợ điều này.

Thư viện api thực hiện việc này bằng Tùy chọn, đây là cặp khóa, giá trị.

Lấy ví dụ về thu thập thông tin của một youtube video nhất định, bạn sẽ sử dụng api này: https://godoc.org/google.golang.org/api/youtube/v3#VideosListCall.Do

Để sử dụng phím api, chỉ cần thực hiện một loại mà thực hiện giao diện CallOption, và để cho nó trả lại chìa khóa api:

type APIKey struct { 
} 

func (k *APIKey) Get() (string, string) { 
    return "key", "YOU API KEY HERE" 
} 

Sau đó, khi gọi API, cung cấp các APIKey với nó:

youtube, err := youtube.New(&http.Client{}) 
call := youtube.Videos.List("snippet,contentDetails,statistics").Id(id) 
rsp, err := call.Do(opt) 

Bằng cách này, bạn có thể xây dựng cho khách hàng wit youtube h khách hàng http vallina, thay vì khách hàng oauth và tận hưởng khóa api đơn giản.

Câu trả lời đầu tiên cho biết bạn có thể sử dụng http GET trực tiếp, nhưng sau đó bạn sẽ cần phải xử lý các lỗi và phân tích cú pháp kết quả cho mình.

+0

chỉnh sửa: Câu hỏi ban đầu là dành cho php, nhưng câu trả lời sẽ áp dụng cho tất cả khách hàng, đó là cùng một bộ API. – fluter