Theo dõi cái nàydocumentationTôi thực hiện thành công đăng nhập Google cho ứng dụng phía máy chủ và có thể truy cập GoogleCalendar của người dùng bằng Python ở phía máy chủ. Tôi không thể làm điều này bằng NodeJS.
Tóm lại - bằng Python tôi đã sử dụng mã xác thực
Và đã đạt được các chứng chỉ sau:
từ ứng dụng nhập khẩu oauth2client
thông tin đăng nhập = client.credentials_from_clientsecrets_and_code(
CLIENT_SECRET_FILE,
['https://www.googleapis.com/auth/drive.appdata', 'hồ sơ', 'email'],
auth_code)
Sau đó tôi có thể lưu trữ các giá trị sau trong cơ sở dữ liệu:
gc_credentials_json = thông tin đăng nhập.to_json()
Và tạo thông tin xác thực (vâng, nó sử dụng mã thông báo làm mới riêng khi cần):
client.Credentials.new_from_json(gc_credentials_json)
Vì vậy, tôi muốn làm điều tương tự bằng NodeJS:
Thông tin xác thực có thể được tạo dễ dàng chỉ bằng cách sử dụng như sau:CLIENT_SECRET_FILE
,phạm vi
Và mã xác thực
(Giống như tôi làm với Python)
Nhận thông tin xác thực bằng cách sử dụng các giá trị thông tin xác thực trước đó mà không cần phân tích xem mã thông báo truy cập đã hết hạn hay chưa - Tôi thích giải pháp có sẵn (được cộng đồng thử nghiệm tốt)
Cảm ơn bạn trước!
我已经使用 thư viện google-auth
Gói thực hiện nó.
Đây là chức năng truy xuất gcClient:
const performanceAuth = async () => {
mã thông báo const = đang chờ phân tích cú phápTokenFromDB();
const auth = OAuth2Client mới(
đã tải xuốngThông tin xác thựcJson.web.client_id,
đã tải xuốngThông tin xác thựcJson.web.client_secret
);
auth.on('tokens', async (newTokens) => {
cập nhậtDBWithNewTokens(newTokens);
});
đang chờ auth.setCredentials(token);
const gcClient = google.calendar({version: 'v3', auth});
trả lại gcClient;
};
Đây là phân tích cú phápTokenFromCurrentDB
Một mẫu cho hàm, chỉ để đưa ra ý tưởng về đầu ra của nó:
const parsingTokenFromCurrentDB = async () => {
// Đặt ở đây mã của bạn để lấy từ DB các giá trị bên dưới
return {
truy cập_token,
mã thông báo_type,
làm mới_token,
ngày hết hạn,
};
};
Vì vậy, bằng cách sử dụng triển khai này, bạn sẽ nhận đượcgcClient
:
const gcClient = đang chờ gc.getGcClient(org);
và sử dụng các phương pháp của nó như:
const gcInfo = đang chờ gc.getInfo(gcClient);
const sự kiện = đang chờ gc.getEvents(gcClient, calcPeriodInGcFormat());
Tôi là một lập trình viên xuất sắc, rất giỏi!