Tôi đang sử dụng phương thức ClientLogin và cURL để đăng nhập vào API của Google. Điều này hoạt động tốt và tôi nhận được một Mã thông báo để sử dụng thêm. bây giờ tôi có thể truy vấn docs.google.com bằng cách sử dụngĐăng nhập vào API Google Spreadshet bằng ClientLogin và PHP/cURL
$curl = curl_init();
$headers = array(
"Authorization: GoogleLogin auth=" . $auth,
"GData-Version: 3.0",
);
curl_setopt($curl, CURLOPT_URL, "https://docs.google.com/feeds/default/private/full");
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
này hoạt động tốt và tôi nhận được một danh sách của tất cả các tài liệu sẵn có trong tài liệu google của tôi chiếm. Nhưng nếu tôi cố gắng cùng một truy vấn để spreadsheets.google.com với URL lấy từ api documentation:
https://spreadsheets.google.com/feeds/spreadsheets/private/full
tôi nhận được một lỗi 401 nói rằng token sử dụng không hợp lệ. Tôi đang sử dụng cùng một mã thông báo và truy vấn trong cả hai trường hợp. Tôi có cần mã thông báo khác cho api bảng tính google không?
Edit: Đây là cách tôi yêu cầu Token:
$clientlogin_url = "https://www.google.com/accounts/ClientLogin";
$clientlogin_post = array(
"accountType" => "HOSTED_OR_GOOGLE",
"Email" => "my email",
"Passwd" => "my password",
"service" => "writely",
"source" => "my application name"
);
$curl = curl_init($clientlogin_url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $clientlogin_post);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
preg_match("/Auth=([a-z0-9_-]+)/i", $response, $matches);
$auth = $matches[1];
curl_close($curl);
token cùng nên được tốt, nhưng nhận xét ra $ curl = curl_init(); và sử dụng cùng một đối tượng $ curl cho spreadsheets.google.com. Hãy cho tôi biết nếu điều đó đã giúp –
không may điều này không có hiệu lực – Marco
Ah, tôi nghĩ bạn cần xác thực cho tất cả các miền. Tôi nghĩ rằng google xử lý docs.google.com và bảng tính. google .com là hai dịch vụ khác nhau yêu cầu auths của riêng họ. Bạn có thể nhanh chóng kiểm tra bằng cách -> 1. lấy danh sách tài liệu google, lưu auth 2. sử dụng cùng một auth cho bảng tính, nắm bắt lỗi, và 3. sử dụng cùng một auth cho google docs một lần nữa, nếu điều này hoạt động, sau đó của chúng tôi giả định là đúng. –