Google-api-nodejs-client: рдХреНрдпрд╛ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдлрд╝рд░ре░ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: googleapis/google-api-nodejs-client

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдПрдкреАрдЖрдИ (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 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╣рд┐рдЯ рдХрд░реВрдВ рдФрд░ рдЬреАрдореЗрд▓ рдПрдкреАрдЖрдИ рдЗрд╕реЗ рдХреИрд╕реЗ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрджрд┐ 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 рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрдЯрд░ рдмрдирд╛рдиреЗ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

1) рдХреНрдпрд╛ рдЬреАрдореЗрд▓ рдПрдкреАрдЖрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реИ?

рд╣рд╛рдБ, рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред README.md :

OAuth2 рдХреНрд▓рд╛рдЗрдВрдЯ рдЬреЛ рдЖрдкрдХреЛ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЯреЛрдХрди рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдФрд░ рдЯреЛрдХрди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

2) рдореИрдВ 401 рдФрд░ 403 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╣рд┐рдЯ рдХрд░реВрдВ рдФрд░ рдЬреАрдореЗрд▓ рдПрдкреАрдЖрдИ рдЗрд╕реЗ рдХреИрд╕реЗ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реИ?

рдпрджрд┐ OAuth2 рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЯреЛрдХрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП 401 рдпрд╛ 403 рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред

@ryanseys рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдХреЛрдИ рдореБрджреНрджрд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЖрд╢реНрд╡рд╕реНрдд рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдмреЗрдЭрд┐рдЭрдХ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВ рдЬреИрд╕реЗ:

  • рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░
  • рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░
  • рдХреЛрдб рдирдореВрдиреЗ
  • рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛
  • рд╕рдВрджрд░реНрдн рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╛ рдЕрдиреНрдп рд▓рд┐рдВрдХ

рдпрд╛, рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЦреЛрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдЕрдиреНрдпрдерд╛, рд╕рдорд░реНрдерди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдкрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредAsk a question on Stackoverflow

рдпрджрд┐ 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 рдиреЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдиреЗ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдЦреЛрдЬрд╛ рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lowagner picture lowagner  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JustinBeckwith picture JustinBeckwith  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

oliverjessner picture oliverjessner  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

CyberT33N picture CyberT33N  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

suparnavg picture suparnavg  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ