рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдПрдкреАрдЖрдИ (v1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
var oauth2Client = new OAuth2(getGoogleCredentials().clientId, getGoogleCredentials().secret);
oauth2Client = new OAuth2(this.clientId, this.clientSecret);
this.oauth2Client.setCredentials({
access_token: this.access_token,
refresh_token: this.refresh_token,
expiry_date: true
});
401 рдпрд╛ 403 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓реАред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЯреЛрдХрди рддрдХ рдкрд╣реБрдВрдЪ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░реАрдлреНрд░реЗрд╢ рд╣реЛ рд╕рдХрддреА рд╣реИред
1) рдХреНрдпрд╛ рдЬреАрдореЗрд▓ рдПрдкреАрдЖрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реИ?
2) рдореИрдВ 401 рдФрд░ 403 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╣рд┐рдЯ рдХрд░реВрдВ рдФрд░ рдЬреАрдореЗрд▓ рдПрдкреАрдЖрдИ рдЗрд╕реЗ рдХреИрд╕реЗ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реИ?
1) рдХреНрдпрд╛ рдЬреАрдореЗрд▓ рдПрдкреАрдЖрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реИ?
рд╣рд╛рдБ, рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред README.md
:
OAuth2 рдХреНрд▓рд╛рдЗрдВрдЯ рдЬреЛ рдЖрдкрдХреЛ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЯреЛрдХрди рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдФрд░ рдЯреЛрдХрди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
2) рдореИрдВ 401 рдФрд░ 403 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╣рд┐рдЯ рдХрд░реВрдВ рдФрд░ рдЬреАрдореЗрд▓ рдПрдкреАрдЖрдИ рдЗрд╕реЗ рдХреИрд╕реЗ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реИ?
рдпрджрд┐ OAuth2 рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЯреЛрдХрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП 401 рдпрд╛ 403 рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред
@ryanseys рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдХреЛрдИ рдореБрджреНрджрд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЖрд╢реНрд╡рд╕реНрдд рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдмреЗрдЭрд┐рдЭрдХ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВ рдЬреИрд╕реЗ:
рдпрд╛, рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЦреЛрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЕрдиреНрдпрдерд╛, рд╕рдорд░реНрдерди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдкрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ OAuth2 рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЯреЛрдХрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП 401 рдпрд╛ 403 рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред
oauth2Client
рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж,
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди рд░реАрдлреНрд░реЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдХ рдирдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛? рдореБрдЭреЗ рдпрд╣ рдбреЙрдХреНрд╕ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реИ - рдореИрдВ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЯреЛрдХрди рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдзрдиреНрдпрд╡рд╛рдж!
рдпреБрдкреАрдбреА
рдЕрднреА рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЬреЛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ рд╡рд╣ рдЕрдЧрд▓рд╛ рд╣реИ:
let storedToken = { access_token: "...", expiry_date: 0000, ... };
oauth2Client.getAccessToken((err, access_token) => {
if (storedToken.access_token !== access_token) {
Object.assign(storedToken, oauth2Client.credentials || {});
}
// next steps go here
})
рдФрд░ рд╕реАрдзреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ oauth2Client.credentials
рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрдЯрд░ рдмрдирд╛рдиреЗ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?
рдореБрдЭреЗ рднреА рдЗрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ oauth2Client.refreshAccessToken()
рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЕрджреНрдпрддрди рдЯреЛрдХрди рдХреЛ рд╕рд╣реЗрдЬ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИред
рдХреНрдпрд╛ рд╡рд┐рдзрд┐ рд╣реИ рдХрд┐ @ZitRos рдиреЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдиреЗ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдЦреЛрдЬрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
oauth2Client
рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж,рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди рд░реАрдлреНрд░реЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдХ рдирдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛? рдореБрдЭреЗ рдпрд╣ рдбреЙрдХреНрд╕ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реИ - рдореИрдВ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЯреЛрдХрди рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдзрдиреНрдпрд╡рд╛рдж!
рдпреБрдкреАрдбреА
рдЕрднреА рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЬреЛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ рд╡рд╣ рдЕрдЧрд▓рд╛ рд╣реИ:
рдФрд░ рд╕реАрдзреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛
oauth2Client.credentials
рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрдЯрд░ рдмрдирд╛рдиреЗ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?