Firebase-tools: рдПрдбреАрд╕реА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддреНрд░реБрдЯрд┐: рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рдордИ 2018  ┬╖  46рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: firebase/firebase-tools

рдирдорд╕реНрддреЗ, рдореИрдВ firebase рдХрд╛рд░реНрдпреЛрдВ рдХреА рддреИрдирд╛рддреА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЬрдм рдореИрдВ "GOOGLE_APPLICATION_CREDENTIALS= . рдЬреИрд╕рд╛ рдХреБрдЫ рдЪрд▓рд╛рддрд╛ рд╣реВрдВрдлрд╛рдпрд░рдмреЗрд╕ рдЙрдкрдпреЛрдЧ--non-interactive --debugтАЭ рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╣реИ:

рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА

3.18.5

рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо рд╕реВрдЪрдирд╛

рдХрдВрдЯреЗрдирд░ рдиреЛрдб:6.14-рдЕрд▓реНрдкрд╛рдЗрди

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

/usr/bin/docker run --rm -v /workspace:/workspace -e GOOGLE_APPLICATION_CREDENTIALS=рдиреЛрдб: 6.14-рдЕрд▓реНрдкрд╛рдЗрди рдиреЛрдб_рдореЙрдбреНрдпреВрд▓/рдлрд╛рдпрд░рдмреЗрд╕-рдЯреВрд▓реНрд╕/рдмрд┐рди/рдлрд╛рдпрд░рдмреЗрд╕ рдЙрдкрдпреЛрдЧ--рдбреАрдмрдЧ

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рдкреНрд░рдорд╛рдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

[2018-05-29рдЯреА15:57:32.507рдЬреЗрдб] > рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рджрд╛рдпрд░реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: [тАЬрдИрдореЗрд▓тАЭ,тАЬрдУрдкрдирд┐рдбтАЭ,тАЬhttps://www.googleapis.com/auth/cloudplatformprojects.readonlyтАЬ,тАЭhttps://www .googleapis.com/auth/firebaseтАЭ]
[2018-05-29рдЯреА15:57:32.507рдЬреЗрдб] > рдРрдк рдбрд┐рдлреЙрд▓реНрдЯ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕
[2018-05-29рдЯреА15:57:32.547рдЬреЗрдб] ! рд╕реНрд╡рдд: рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддреНрд░реБрдЯрд┐: рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред
[2018-05-29рдЯреА15:57:32.547рдЬреЗрдб] > рдХреЛрдИ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ?

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

@mbleeigh рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЕрднреА рддрдХ рдлрд╛рдпрд░рдмреЗрд╕ рд╕реАрдПрд▓рдЖрдИ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рд╣рдо рдЗрд╕реЗ рд╕реАрдЖрдИ рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВред рддреЛ GOOGLE_APPLICATION_CREDENTIALS рд╕рдорд░реНрдерди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

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

рдирдорд╕реНрддреЗ, рдЖрд╡рд╢реНрдпрдХ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ GOOGLE_APPLICATION_CREDENTIALS рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд╣ рд▓рд╛рдЗрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдЖрдкрдХреЛ рдПрдХ CI рдЯреЛрдХрди рдЬреЗрдирд░реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ --token рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛, рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП https://github.com/firebase/firebase-tools#using -with-ci-systems рджреЗрдЦреЗрдВред

рдирдорд╕реНрддреЗ,
рдФрд░ https://github.com/firebase/firebase-tools/pull/417 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ GOOGLE_APPLICATION_CREDENTIALS рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП firebase-tools google-auto-auth рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдпрд╛ рдореИрдВ рдЧрд▓рдд рд╣реВрдБ?

рдореИрдВ рд╕реАрдЖрдИ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рди рдХрд┐ Google рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдЬреАрд╕реБрдЗрдЯ рдпрд╛ рдХреНрд▓рд╛рдЙрдб рдкрд╣рдЪрд╛рди рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА)

рд╢реБрдХреНрд░рд┐рдпрд╛

рдирдорд╕реНрддреЗ,
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп firebase-public.firebaseio рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред com:443 рдФрд░ рдЗрд╕рдореЗрдВ 200 рдХрд╛ HTTP рд░рд┐рдЯрд░реНрди рдХреЛрдб рд╣реИ рд▓реЗрдХрд┐рди 0 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ

рд╣рд╛рдп, рддреБрдо рд╕рд╣реА рд╣реЛред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдЙрд╕ рдкреАрдЖрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛ред рдореИрдВ рдЗрд╕рд╕реЗ рд╕реБрдкрд░ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдорд╛рдЗрдХрд▓, рдХреНрдпрд╛ рдЖрдк рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рд╛рдп @laurenzlong @mbleeigh ,
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП "рдбреЛрдореЗрди рд╡рд╛рдЗрдб рдЕрдереЙрд░рд┐рдЯреА" рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдм рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рд╣реИ:

GOOGLE_APPLICATION_CREDENTIALS=<path_to_json> firebase deploy --only functions --non-interactive --project=<project_id> --debug

[2018-06-04T09:25:46.202Z] ----------------------------------------------------------------------
[2018-06-04T09:25:46.211Z] CLI Version:   3.18.5
[2018-06-04T09:25:46.212Z] Platform:      linux
[2018-06-04T09:25:46.212Z] Node Version:  v6.14.2
[2018-06-04T09:25:46.212Z] Time:          Mon Jun 04 2018 09:25:46 GMT+0000 (UTC)
[2018-06-04T09:25:46.213Z] ----------------------------------------------------------------------

[2018-06-04T09:25:46.238Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2018-06-04T09:25:46.238Z] > attempting to authenticate via app default credentials
[2018-06-04T09:25:46.445Z] xxxx.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xx
[2018-06-04T09:25:46.446Z] > retrieved access token via default credentials
[2018-06-04T09:25:46.449Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/projects/<project_id>  

 Mon Jun 04 2018 09:25:46 GMT+0000 (UTC)
[2018-06-04T09:25:47.067Z] <<< HTTP RESPONSE 404 server=nginx, date=Mon, 04 Jun 2018 09:25:47 GMT, content-type=application/json; charset=utf-8, content-length=87, connection=close, x-content-type-options=nosniff
[2018-06-04T09:25:47.069Z] <<< HTTP RESPONSE BODY code=PROJECT_NOT_FOUND, message=The specified project was not found.

рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд╕рдВрдкрд╛рджрдХ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдореИрдВ Google рдкрд╣рдЪрд╛рди (рдПрд╕рд╡реАрд╕реА рдЦрд╛рддрд╛ рдирд╣реАрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд╕рдорд╕реНрдпрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ

рдореБрдЭреЗ рдпрд╣ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реА рд╣реИ (рд▓реЗрдХрд┐рди рд╡реЗ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ) https://github.com/firebase/firebase-tools/issues/744

рдзрдиреНрдпрд╡рд╛рдж

рдирд╣реАрдВ, рдореИрдВ рдЧрд▓рдд рд╣реВрдБред
рдЕрдЧрд░ рдореИрдВ рдлрд╛рдпрд░рдмреЗрд╕ рдЙрдкрдпреЛрдЧ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдлрд┐рд░ рд╕реЗ рд╣реИ:

[2018-06-04T14:39:38.660Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase"]
[2018-06-04T14:39:38.660Z] > attempting to authenticate via app default credentials
[2018-06-04T14:39:38.693Z] ! auto-auth error: Scopes are required for this request.
[2018-06-04T14:39:38.694Z] > no credentials could be found or automatically retrieved

Owner рднреВрдорд┐рдХрд╛ рд╡рд╛рд▓реЗ рд╕реЗрд╡рд╛-рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рднреА рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ firebase CLI рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ:

$ export GOOGLE_APPLICATION_CREDENTIALS=account.json
$ firebase list --debug
[2018-06-05T12:15:17.340Z] ----------------------------------------------------------------------
[2018-06-05T12:15:17.343Z] Command:       /usr/local/bin/node /usr/local/bin/firebase list --debug
[2018-06-05T12:15:17.343Z] CLI Version:   3.18.5
[2018-06-05T12:15:17.343Z] Platform:      linux
[2018-06-05T12:15:17.343Z] Node Version:  v10.3.0
[2018-06-05T12:15:17.343Z] Time:          Tue Jun 05 2018 12:15:17 GMT+0000 (UTC)
[2018-06-05T12:15:17.343Z] ----------------------------------------------------------------------

[2018-06-05T12:15:17.347Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase"]
[2018-06-05T12:15:17.348Z] > attempting to authenticate via app default credentials
[2018-06-05T12:15:17.352Z] ! auto-auth error: Scopes are required for this request.
[2018-06-05T12:15:17.352Z] > no credentials could be found or automatically retrieved

Error: Command requires authentication, please run firebase login

рдПрдХ рдорд╛рдореВрд▓реА рд╕реБрд░рд╛рдЧ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдЦрд╛рд▓реА рд╣реИ (рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХреЛ рдбреАрдХреЛрдб рдХрд┐рдпрд╛ рд╣реИ)

рдпрд╣ рдЗрд╕рдХреЗ рд░реВрдк рд╕реЗ рдирд┐рд╣рд┐рдд рд╣реИ
xxxx.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

рдордзреНрдп x рдбреЗрдЯрд╛ рдкреЗрд▓реЛрдб рд╣реИ рдФрд░ рдЖрдХрд╛рд░ рдореЗрдВ 1 рд╡рд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рднрд░рд╛ рдирд╣реАрдВ рд╣реИред

рдлрд╛рдпрд░рдмреЗрд╕-рдЯреВрд▓реНрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП google-auto-auth рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдУрд╣, рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг ( 3.18.6 ) рдЕрднреА рднреА authScopes рд╕реЗ autoAuth() ред рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рд▓рд╛рдЗрди рд╕реЗ рдкрд╣рд▓реЗ рд▓реЙрдЧ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ: https://github.com/firebase/firebase-tools/blob/b2594467d8980c5a1e2b8c4aff3de9877a98b42b/lib/requireAuth.js#L21
рдореБрдЭреЗ authScopes: undefined ред

рдЕрдЧрд░ рдореИрдВ рдЬреЛрдбрд╝реВрдВ

authScopes = [
  scopes.EMAIL,
  scopes.OPENID,
  scopes.CLOUD_PROJECTS_READONLY,
  scopes.FIREBASE_PLATFORM,
];

рдЙрд╕ рд▓рд╛рдЗрди рд╕реЗ рдкрд╣рд▓реЗ, рдлрд┐рд░ рдпрд╣ рдПрдХ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ PROJECT_NOT_FOUND

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ @tomlarkworthy , рдХрд┐ OAuth рдЯреЛрдХрди JWT рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдордзреНрдп рднрд╛рдЧ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ https://developers.google.com/apis-explorer/#search/oauth2/oauth2/v2/oauth2.tokeninfo рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ "scope": "https://www.googleapis.com/auth/cloudplatformprojects.readonly https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/firebase https://www.googleapis.com/auth/userinfo.email", рд╕рд╛рде рдПрдХ рдорд╛рдиреНрдп рдЯреЛрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ

рдзрдиреНрдпрд╡рд╛рдж! рдареАрдХ рд╣реИ рддреЛ рдЬрдм рдореБрдЭреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реАред рдЬрдм рдореИрдВ рдЯреЛрдХрди рдХреЛ рдбреАрдХреЛрдб рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рджрд╛рдпрд░рд╛ рд╣реЛрддрд╛ рд╣реИ " https://www.googleapis.com/auth/cloud-platform "ред

рд╡рд╣рд╛рдБ рдПрдХ "рд╕рд╛рдорд╛рдиреНрдп" рдЯреЛрдХрди (рдпрд╛рдиреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ рдмреАрдЪ рдПрдХ рдЕрдВрддрд░ рд╣реИ firebase login ):

{
 "issued_to": "563584335869-fgrhgmd47bqnekij5i8b5pr03ho849e6.apps.googleusercontent.com",
 "audience": "563584335869-fgrhgmd47bqnekij5i8b5pr03ho849e6.apps.googleusercontent.com",
 "user_id": "xxxyyy",
 "scope": "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/cloudplatformprojects.readonly https://www.googleapis.com/auth/firebase https://www.googleapis.com/auth/plus.me",
 "expires_in": 3484,
 "email": "[email protected]",
 "verified_email": true,
 "access_type": "offline"
}

рдФрд░ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ (рдПрд╕рдП) рд╕реЗ рдЙрддреНрдкрдиреНрди:

{
 "issued_to": "1160xxxx",
 "audience": "1160xxxx",
 "user_id": "1160xxxx",
 "scope": "https://www.googleapis.com/auth/cloudplatformprojects.readonly https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/firebase https://www.googleapis.com/auth/userinfo.email",
 "expires_in": 3563,
 "email": "[email protected]",
 "verified_email": true,
 "access_type": "offline"
}

рддреЛ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди рд╕рд╣реА audience рдФрд░ user_id рдХреЛ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ https://github.com/firebase/firebase-tools/blob/376678fef91f71de5859f14d8374b2d8d2731980/ рд╕реЗ рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@tomlarkworthy рдЕрднреА рднреА рдЕрдЬреАрдм рд╣реИ, рдореЗрд░рд╛ authScope undefined рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╕реНрдХреЛрдк рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ firebase logout рдерд╛?

рдареАрдХ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рд╢рдкрде 2 рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЛрдореЗрди рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░/рдпрд╛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ рд╕реАрдЖрдИ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИред

рдореИрдВ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдкрд░ рдореЗрд░рд╛ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБред рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЬреИрд╕реА рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдереАред рдореЗрд░реЗ рдкрд╛рд╕ рдореВрд▓ рдкреЛрд╕реНрдЯрд░ рдХреА рддрд░рд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЯреЛрдХрди рдлреЙрд░реНрдо рд╕рд░реНрд╡рд┐рд╕ рдЕрдХрд╛рдЙрдВрдЯ рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ --token рдХреЗ рд╕рд╛рде рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ: -

HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 401 рднрд┐рдиреНрдирддрд╛=X-рдЙрддреНрдкрддреНрддрд┐, рдЙрддреНрдкрддреНрддрд┐,рд╕реНрд╡реАрдХрд╛рд░-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ, www-authenticate=Bearer realm=" https://accounts.google.com/ ", content-type=application/json; рд╡рд░реНрдгрд╕реЗрдЯ = рдпреВрдЯреАрдПрдл -8, рджрд┐рдирд╛рдВрдХ = рдЧреБрд░реБ, 07 рдЬреВрди 2018 00:16:43 рдЬреАрдПрдордЯреА, рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ = рдЧреБрд░реБ, 07 рдЬреВрди 2018 00:16:43 рдЬреАрдПрдордЯреА, рдХреИрд╢-рдирд┐рдпрдВрддреНрд░рдг = рдирд┐рдЬреА, рдЕрдзрд┐рдХрддрдо рдЖрдпреБ = 0, рдПрдХреНрд╕-рд╕рд╛рдордЧреНрд░реА- рдЯрд╛рдЗрдк-рд╡рд┐рдХрд▓реНрдк = рдиреЛрд╕реНрдирд┐рдл, рдПрдХреНрд╕-рдлреНрд░реЗрдо-рд╡рд┐рдХрд▓реНрдк = SAMEORIGIN, x-xss-рд╕реБрд░рдХреНрд╖рд╛ = 1; рдореЛрдб = рдмреНрд▓реЙрдХ, рд╕рд░реНрд╡рд░ = рдЬреАрдПрд╕рдИ, рдСрд▓реНрдЯ-рдПрд╕рд╡реАрд╕реА = рдХреНрд╡рд┐рдХ = ": 443"; рдорд╛ = 2592000; v="43,42,41,39,35", рдПрдХреНрд╕реЗрдкреНрдЯ-рд░реЗрдВрдЬ=рдХреЛрдИ рдирд╣реАрдВ, рдХрдиреЗрдХреНрд╢рди=рдХрд░реАрдм
[2018-06-07рдЯреА00:16:43.786рдЬреЗрдб] <<< HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рддреНрд░реБрдЯрд┐ = рдЕрдирдзрд┐рдХреГрдд_рдХреНрд▓рд╛рдЗрдВрдЯ, рддреНрд░реБрдЯрд┐_рд╡рд┐рд╡рд░рдг = рдЕрдирдзрд┐рдХреГрдд
[2018-06-07рдЯреА00:16:43.791рдЬреЗрдб] > рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рджрд╛рдпрд░реЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ: ["рдИрдореЗрд▓", "рдУрдкрдирд┐рдб", "https://www.googleapis.com/auth/cloudplatformprojects.readonly", "https://www .googleapis.com/auth/firebase"]
[2018-06-07рдЯреА00:16:43.792рдЬреЗрдб] > --token рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рдХреГрдд рдХрд░рдирд╛
[2018-06-07рдЯреА00:16:43.792рдЬреЗрдб] > рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рд░реАрдлреНрд░реЗрд╢рд┐рдВрдЧ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди: ["рдИрдореЗрд▓", "рдУрдкрдирд┐рдб", "https://www.googleapis.com/auth/cloudplatformprojects.readonly", "https:/ /www.googleapis.com/auth/firebase"]
[2018-06-07T00:16:43.793Z] >>> HTTP рдЕрдиреБрд░реЛрдз рдкреЛрд╕реНрдЯ https://www.googleapis.com/oauth2/v3/token
{рд░рд┐рдлреНрд░реЗрд╢_рдЯреЛрдХрди: 'ya29.c.XXXXXXXXXXXX',
client_id: '563584335869-fgrhgmd47bqnekij5i8b5pr03ho849e6.apps.googleusercontent.com',
client_secret: 'j9iVZfS8kkCEFUPaAeJV0sAi',
рдЧреНрд░рд╛рдВрдЯ_рдЯрд╛рдЗрдк: 'рд░рд┐рдлреНрд░реЗрд╢_рдЯреЛрдХрди',
рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░: 'рдИрдореЗрд▓ openid https://www.googleapis.com/auth/cloudplatformprojects.readonly https://www.googleapis.com/auth/firebase ' }

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рдкрде рдЧреНрд░рд╛рд╣рдХ рдЖрдИрдбреА рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЖ рд░рд╣реА рд╣реИ?

@tomlarkworthy рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдХрдард┐рди рд╣реЛ - рдореИрдВ рдЕрдм clientId рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдУрд╣, рдЖрдк рдЗрди рдорд╛рдиреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

https://github.com/firebase/firebase-tools/blob/376678fef91f71de5859f14d8374b2d8d2731980/lib/api.js

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдУрде рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╕реНрдЯрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдлрд╛рдпрд░рдмреЗрд╕-рдЯреВрд▓реНрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ_рдЖрдИрдбреА рдФрд░ рд╕реАрдХреНрд░реЗрдЯ_рдЖрдИрдбреА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ред рдлрд┐рд░ рдореИрдВрдиреЗ рд╢рдкрде рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд┐рдпрд╛, рдЯреЛрдХрди рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╛рдпрд░рдмреЗрд╕-рдЯреВрд▓реНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ред рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд░рд╛рд╕реНрддрд╛ рдЕрдкрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЯреЛрдХрди рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рддрд╛рдЬрд╝рд╛ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЯреЛрдХрди рдбрд┐рдХреЛрдбрд░ рдореЗрдВ рдкреБрд╖реНрдЯрд┐ рдХреА рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрд▓рд╛рдЙрдбрдкреНрд▓реЗрдЯрдлреЙрд░реНрдордкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рд░реАрдбреЛрдирд▓реА рд╕реНрдХреЛрдк рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред

рдЬрд╛рдирдХрд╛рд░реА: stderr: [2018-06-07T01:02:21.126Z] Env рдУрд╡рд░рд░рд╛рдЗрдб: FIREBASE_CLIENT_ID, FIREBASE_CLIENT_SECRET
[2018-06-07T01:02:21.126Z] -------------------------------------- --------------------------------

рдЬрд╛рдирдХрд╛рд░реА: stderr: [2018-06-07T01:02:21.138рдЬреЗрдб] > рдХрдорд╛рдВрдб рдХреЛ рд╕реНрдХреЛрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: ["рдИрдореЗрд▓", "рдУрдкрдирд┐рдб", " https://www.googleapis.com/auth/cloudplatformprojects.readonly "," https ://www.googleapis.com/auth/firebase "," https://www.googleapis.com/auth/cloud-platform "]

рдЬрд╛рдирдХрд╛рд░реА: stderr: [2018-06-07T01:02:21.138Z] > --token рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рдХреГрдд рдХрд░рдирд╛
[2018-06-07рдЯреА01:02:21.140рдЬреЗрдб] > рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рд░реАрдлреНрд░реЗрд╢рд┐рдВрдЧ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди: ["рдИрдореЗрд▓", "рдУрдкрдирд┐рдб", "https://www.googleapis.com/auth/cloudplatformprojects.readonly", "https:/ /www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2018-06-07T01:02:21.140Z] >>> HTTP рдЕрдиреБрд░реЛрдз рдкреЛрд╕реНрдЯ https://www.googleapis.com/oauth2/v3/token
{рд░рд┐рдлреНрд░реЗрд╢_рдЯреЛрдХрди: 'ya29.XXX',
client_id: '278696186940-fbqtl733l62g4qj8aekr4i66cpo0k5c1.apps.googleusercontent.com',
client_secret: 'XXXX',
рдЧреНрд░рд╛рдВрдЯ_рдЯрд╛рдЗрдк: 'рд░рд┐рдлреНрд░реЗрд╢_рдЯреЛрдХрди',
рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░: 'рдИрдореЗрд▓ openid https://www.googleapis.com/auth/cloudplatformprojects.readonly https://www.googleapis.com/auth/firebase https://www.googleapis.com/auth/cloud-platform ' }
рдмреБрдз рдЬреВрди 06 2018 18:02:21 рдЬреАрдПрдордЯреА-0700 (рдкреАрдбреАрдЯреА)

рдЬрд╛рдирдХрд╛рд░реА: stderr: [2018-06-07T01:02:21.318Z] <<< HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 200 x-google-netmon-label=/bns/ph/borg/ph/bns/apiserving/prod_hightraffic_api_frontend.server/998, x -google-gfe-backend-request-info=eid=HYQYW5jODYyytgbB3JfoAg, cache-control=no-cache, no-store, max-age=0, рдЬрд░реВрд░реА-рдкреБрдирд░реАрдХреНрд╖рд┐рдд, pragma=no-cache, рд╕рдорд╛рдкреНрддрд┐=рд╕реЛрдо, 01 рдЬрдирд╡рд░реА 1990 00:00:00 рдЬреАрдПрдордЯреА, рджрд┐рдирд╛рдВрдХ = рдЧреБрд░реБ, 07 рдЬреВрди 2018 01:02:21 рдЬреАрдПрдордЯреА, рднрд┐рдиреНрдирддрд╛ = рдПрдХреНрд╕-рдЙрддреНрдкрддреНрддрд┐, рдЙрддреНрдкрддреНрддрд┐, рд╕реНрд╡реАрдХреГрддрд┐-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ, рдПрдХреНрд╕-рдЧреВрдЧрд▓-рд╕рддреНрд░-рдЬрд╛рдирдХрд╛рд░реА = рдЬреАрдЬреАрдЖрдИрд╡рд╛рдИрдмреАрдЖрдИрдПрдмреА, рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ = рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬреЗрд╕рди ; charset=UTF-8, x-content-type-options=nosniff, x-frame-options=SAMEORIGIN, x-xss-protection=1; рдореЛрдб=рдмреНрд▓реЙрдХ, рд╕рд░реНрд╡рд░=рдЬреАрдПрд╕рдИ, x-google-servertype=рдПрдкрд┐рд╕рд░реНрд╡рд┐рдВрдЧ, x-google-gfe-request-trace=acsfoh11:443,phnm21-v6:9897,/bns/ph/borg/ph/bns/apiserving/prod_hightraffic_api_frontend .server/998,phnm21-v6:9897,acsfoh11:443, x-google-gslb-service=apiserving-hightraffic, x-google-backends=plbn61:9882,/bns/ph/borg/ph/bns/apiserving/ prod_hightraffic_api_frontend.server/998,phnm21-v6:9897,/bns/ph/borg/ph/bns/traffic-prod/shared-layer2-gfe/495,acsfoh11:443, x-google-dos-service-trace= main :identity-o-auth-2-service-migration , main:shared-layer2-gfe , x-google-service=identity-o-auth-2-service-migration,рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд-рд╕рд╛рдЭрд╛-рд▓реЗрдпрд░2-grpc-рдПрдЧреНрд░реАрдЧреЗрдЯ, x -google-gfe-response-code-details-trace=response_code_set_by_backend,response_code_set_by_backend, x-google-gfe-response-body-transformations=gunzipped, x-google-shellfish-status=CA0gBEBG, alt-svc=quic=":443 "; рдорд╛ = 2592000; v="43,42,41,39,35", x-google-gfe-service-trace=identity-o-auth-2-service-migration,рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд-рд╕рд╛рдЭрд╛-рд▓реЗрдпрд░2-рдЬреАрдЖрд░рдкреАрд╕реА-рдПрдЧреНрд░реАрдЧреЗрдЯ, рдПрдХреНрд╕реЗрдкреНрдЯ-рд░реЗрдВрдЬ= рдХреЛрдИ рдирд╣реАрдВ, рдХрдиреЗрдХреНрд╢рди = рдХрд░реАрдм

рдЬрд╛рдирдХрд╛рд░реА: stderr: [2018-06-07T01:02:21.319Z] >>> HTTP рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ https://admin.firebase.com/v1/projects/docsite-go

рдмреБрдз рдЬреВрди 06 2018 18:02:21 рдЬреАрдПрдордЯреА-0700 (рдкреАрдбреАрдЯреА)

рдЬрд╛рдирдХрд╛рд░реА: stderr: [2018-06-07T01:02:21.652Z] <<< HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 404 рд╕рд░реНрд╡рд░ = nginx, рджрд┐рдирд╛рдВрдХ = рдЧреБрд░реБ, 07 рдЬреВрди 2018 01:02:21 GMT, рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ = рдПрдкреНрд▓рд┐рдХреЗрд╢рди/json; рд╡рд░реНрдгрд╕реЗрдЯ = utf-8, рд╕рд╛рдордЧреНрд░реА-рд▓рдВрдмрд╛рдИ = 87, рдХрдиреЗрдХреНрд╢рди = рдмрдВрдж, x-рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░-рд╡рд┐рдХрд▓реНрдк = nosniff

рдЬрд╛рдирдХрд╛рд░реА: stderr: [2018-06-07T01:02:21.652Z] <<< HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмреЙрдбреА рдХреЛрдб = PROJECT_NOT_FOUND, рд╕рдВрджреЗрд╢ = рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдорд┐рд▓рд╛ред

@tomlarkworthy рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, --token рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рддрдм рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рд╣реИ (рдлрд┐рд░ рд╕реЗ, рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБ)ред

рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд╣рдореЗрдВ рдЗрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдПрд╕рдП рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рд░реНрдЧ рдкрд░ рдЬрд╛рдирд╛ рдФрд░ OAuth рдЯреЛрдХрди рдХреЗ рдмрдЬрд╛рдп рдХреНрд▓рд╛рдЗрдВрдЯ JWT рдХреЗ рд╕рд╛рде Firebase API рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://developers.google.com/identity/protocols/OAuth2ServiceAccount#jwt -auth

google/google-auth-library-nodejs , рдЬрд┐рд╕рдХрд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ stephenplusplus/google-auto-auth рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ/рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдкреНрд░рдЧрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/firebase/firebase-tools/issues/647#issuecomment -361926336 рдиреЗ рдкрд╣рд▓реЗ рд╕рдлрд▓рддрд╛ рдХреА рд╕реВрдЪрдирд╛ рджреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рд╣реЛ рдЧрдИ рд╣реИред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди Firebase API (https://admin.firebase.com/v1/projects) рдирд┐рдЬреА рд╣реИ , рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЯреЛрдХрди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдЗрд╕реЗ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рджрд╛рдпрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрдиреЗ рд╕реЗ рдлрд╛рдпрд░рдмреЗрд╕ рдФрд░ рдЬреАрд╕реАрдкреА рджреЛрдиреЛрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ (рдФрд░ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдбреА-рдХрдкрд▓реНрдб) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред

рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ --token рд╡рд┐рдХрд▓реНрдк рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдирд╣реАрдВред рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ firebase login:ci рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ admin.firebase.com рдмреИрдХрдПрдВрдб рдореЗрдВ рдПрдХ рд╡реНрдпрд╛рдкрдХ-рдЕрдиреБрдорддрд┐-рдЖрд╡рд╢реНрдпрдХ IAM рдЬрд╛рдВрдЪ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рдо рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рд╕реБрдкрд░-рдлрд╛рд╕реНрдЯ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреА рдЙрдореНрдореАрдж рдХрд░реВрдВред

рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ --token рд╡рд┐рдХрд▓реНрдк рдХреЛ рдПрдХ рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ

рд╣рд╛рдВ, рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рд╕рдордЭрд╛ред

рд╕реАрдЖрдИ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рдП рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛрдЧрд╛ред рд░реАрдлреНрд░реЗрд╢ рдЯреЛрдХрди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдЬреАрд╕реАрдкреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреНрд░рд╢рд╛рд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП gcloud рдХрдорд╛рдВрдб рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдореЗрдВ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ (Firebase CLI рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди, рдФрд░ gcloud рд▓рд┐рдП SA рдХреБрдВрдЬреА) рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреА рд╣реИред

рдореИрдВ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ FIREBASE_TOKEN='<token_here>' firebase deploy --only firestore,storage (рдореИрдВрдиреЗ рдЕрдиреНрдп рд▓рдХреНрд╖реНрдпреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ) рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯреЛрдХрди рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП " https://www.googleapis.com/auth/cloud-platform " рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рд╡реЙрд▓реНрдЯ рдХреЗ GCP рд╕реАрдХреНрд░реЗрдЯ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ SA рдХреБрдВрдЬреА + GOOGLE_APPLICATION_CREDENTIALS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдирд╡реАрдирддрдо рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓реА рдХреЗ рд╕рд╛рде, рдХреЛрдИ рднреА рдХрдорд╛рдВрдб рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ:

root<strong i="6">@frontend</strong>:/usr/src/app$ firebase list

Error: HTTP Error: 404, The specified project was not found.

Having trouble? Try firebase list --help

@cpick рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡реЙрд▓реНрдЯ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдУрде рдЯреЛрдХрди рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ?

@paolomainardi firebase list SA рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд░рд╛рд╕рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реВрдЪреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд╛рдХреА рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХреБрдЫ рдПрдкреАрдЖрдИ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред рдореИрдВ рдПрдХ рдФрд░ рдХрдорд╛рдВрдб рдЖрдЬрд╝рдорд╛рдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред

рд╣рдо GOOGLE_APPLICATION_CREDENTIALS рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдмрд┐рдирд╛ рд╣реБрдкреНрд╕ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреВрджрддреЗ рд╣реБрдП рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдорд╣рд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рддрд╛ рд╣реИред

@paolomainardi рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ vault рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╣рд╛рдВ рд╣реИ (рдпрд╣ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдХреЗ рдмрд╛рдж рд╕рд┐рд░реНрдл рдПрдХ рдЕрдиреБрдорд╛рди рд╣реИ)ред

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ gcloud alpha iam service-accounts sign-jwt рдХрд░рддрд╛ рд╣реИ (рдлрд┐рд░ рд╕реЗ, рдХреБрдЫ рд╣рдж рддрдХ рд╢рд┐рдХреНрд╖рд┐рдд рдЕрдиреБрдорд╛рди)ред

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @cpick , рдореИрдВ рдЖрдкрдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирдЬрд╝рд░ рдбрд╛рд▓реА рдФрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдФрд░ рдПрдХ access_token рд╕реЗ requAuth.js рдореЗрдВ
рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдХрд╛рдо рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓реА рд╣рдореЗрд╢рд╛ https://admin.firebase.com/v1/projects/ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ (рдЖрдк рдореЗрд░рд╛ рдорддрд▓рдм w/ --debug рдзреНрд╡рдЬ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реВрдВ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ 'рд╡рд┐рд░рд╛рд╕рдд' рд╣реИ 'рдПрдкреАрдЖрдИ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдЬреЛ рдПрд╕рд╡реАрд╕реА рдЦрд╛рддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ'ред

рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдиреНрдп рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ w/рд╕рд░рд▓ GET рдХреЙрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рд╡реЗ рдареАрдХ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ:

рд░реЗрдлрд░реА рдХреЗ рд▓рд┐рдП


  • рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд╕рдВрд╢реЛрдзрди рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП requireAuth.js рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ svc_accounts рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди w/рд╡рд╛рдЗрдб рд╕реНрдХреЛрдк рд▓реМрдЯрд╛рдПрдЧрд╛
function getServiceAccountClient() {
  const credFile = '/path/to/cert.json';
  const keys = require(credFile);
  let client = new JWT(
    keys.client_email,
    null,
    keys.private_key,
    ["email","openid","https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase"],
  );
  return client;
};

function _autoAuth(options, authScopes) {
  return new Promise(function(resolve, reject) {
    var client = getServiceAccountClient();
    client.getAccessToken().then(res => {
      console.log(res);
     api.setAccessToken(res.token);
     resolve();

    }).catch(function (error) {
      console.error('Unable to recall targetClient access_token ' + error);
    });    

    /*
        logger.debug("> attempting to authenticate via app default credentials");
 ......

  • рд╕рд╛рдорд╛рдиреНрдп рдЧреНрд░рд╛рд╣рдХ
const {JWT} = require('google-auth-library');

function getServiceAccountClient() {
    const credFile = '/path/to/cert.json';
    const keys = require(credFile);

    let client = new JWT(
      keys.client_email,
      null,
      keys.private_key,
      ["email","openid","https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase"],
    );
    return client;
  };

  var client = getServiceAccountClient();
    let project_id = 'your_project';
    let url = 'https://admin.firebase.com/v1/projects/' + project_id
    //let url = "https://firestore.googleapis.com/v1beta1/projects/" + project_id + "/databases/(default)/indexes"
    //let url = "https://firebaserules.googleapis.com/v1/projects/" + project_id  + "/rulesets" 

    client.requestAsync({url}).then(resp => {
      console.log(resp.data);
    }).catch(function (error) {
      console.error('Unable to list buckets: ' + error);
    }); 

рдореИрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдВрдд рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреА рд╣реВрдВ firestore , storage рдФрд░ hosting рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж requireAuth.js рдЗрд╕ рдореЗрдВ showin рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рд░
рдПрдбреАрд╕реА рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдерд╛..>

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╣реИрдХ рдФрд░ рдЕрдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ functions рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред 'рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рд╕рдорд░реНрдерди' рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд mbeigh рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред


рд╡реИрд╕реЗ рднреА, рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

рдПрдХ рдлрд╛рдпрд░рдмреЗрд╕ рдЦрд╛рддреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬреЛ рд╕рдВрджрд░реНрдн рдореЗрдВ рднреА рд╣реИ w/ gcloud

  1. рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдирд┐рдЬреА рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
$ gcloud iam service-accounts list
NAME                                EMAIL
App Engine default service account  [email protected]
firebase-adminsdk                   firebase-adminsdk-h2v8k@firebase-auth-sal.iam.gserviceaccount.com

gcloud iam service-accounts keys  create `pwd`/svc.json --iam-account=firebase-adminsdk-h2v8k@firebase-auth-sal.iam.gserviceaccount.com
  1. рдЙрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ OWNER рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ

    • рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕реНрд╡рд╛рдореА рдХреЗ рд░реВрдк рдореЗрдВ firebase-adminsdk-h2v8k@firebase-auth-sal.iam.gserviceaccount.com рдЬреЛрдбрд╝реЗрдВ
      (рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдПрдХ рдХрдо рдЕрдиреБрдорддрд┐ рд╕реЗрдЯ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрд╕ рдкрд░ рдЧреМрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ
  2. рдХреНрд▓рд╛рдЙрдб рдХрдВрд╕реЛрд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдХреБрдЫ рдПрдкреАрдЖрдИ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:

https://console.developers.google.com/apis/api/cloudresourcemanager.googleapis.com/overview?project=<your_project>

https://console.developers.google.com/apis/api/firebasehosting.googleapis.com/overview?project=<your_project>
  1. рд╕реНрдерд╛рдиреАрдп рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╣рдЯрд╛рдПрдВ

gcloud рдФрд░ firebase

$ firebase logout
тЬФ  Logged out from [email protected]

$ mv ~/.config/gcloud ~/.config/gcloud_backup
  1. ADC env-var рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рддреИрдирд╛рдд рдХрд░реЗрдВ
export GOOGLE_APPLICATION_CREDENTIALS=`pwd`/svc.json

$ firebase deploy -P firebase-auth-sal --only firestore,hosting,storage 
{ token: 'ya29.c.EmJ8B....',  res: null }

=== Deploying to 'firebase-auth-sal'...

i  deploying storage, firestore, hosting
i  storage: checking storage.rules for compilation errors...
тЬФ  storage: rules file storage.rules compiled successfully
i  firestore: checking firestore.rules for compilation errors...
i  firestore: reading indexes from firestore.indexes.json...
тЬФ  firestore: rules file firestore.rules compiled successfully
i  storage: uploading rules storage.rules...
i  firestore: uploading rules firestore.rules...
тЬФ  firestore: deployed indexes in firestore.indexes.json successfully
i  hosting[fir-auth-sal]: beginning deploy...
i  hosting[fir-auth-sal]: found 1 files in public
тЬФ  hosting[fir-auth-sal]: file upload complete
тЬФ  storage: released rules storage.rules to firebase.storage/firebase-auth-sal.appspot.com
тЬФ  firestore: released rules firestore.rules to cloud.firestore
i  hosting[fir-auth-sal]: finalizing version...
тЬФ  hosting[fir-auth-sal]: version finalized
i  hosting[fir-auth-sal]: releasing new version...
тЬФ  hosting[fir-auth-sal]: release complete

тЬФ  Deploy complete!

Project Console: https://console.firebase.google.com/project/firebase-auth-sal/overview
Hosting URL: https://fir-auth-sal.firebaseapp.com
  1. рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ

deployment_hosting

  1. functions рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

functions рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдХрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рдиреАрдЪреЗ рд╕рдХреНрд╖рдорддрд╛ рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реЛ (рдпрд╣ рдХреБрдЫ рдЕрдиреНрдп mobilesdk.googleapis.com рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╢рд╛рдпрдж рдлрд╛рдпрд░рдмреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рдирд┐рдпреЛрдЬрди client_id рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ

$ firebase deploy -P firebase-auth-sal --only functions --debug

[2018-12-24T01:36:44.034Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/cloudfunctions.googleapis.com/projectSettings/firebase-auth-sal?view=CONSUMER_VIEW  

[2018-12-24T01:36:44.034Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/runtimeconfig.googleapis.com/projectSettings/firebase-auth-sal?view=CONSUMER_VIEW  

[2018-12-24T01:36:44.486Z] <<< HTTP RESPONSE 404 vary=X-Origin, Referer, Origin,Accept-Encoding, content-type=application/json; charset=UTF-8, date=Mon, 24 Dec 2018 01:36:44 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="44,43,39,35", accept-ranges=none, connection=close
[2018-12-24T01:36:44.486Z] <<< HTTP RESPONSE BODY code=404, message=Method not found., status=NOT_FOUND

Error: HTTP Error: 404, Method not found.
[2018-12-24T01:36:44.495Z] Error Context: {
  "body": {
    "error": {
      "code": 404,
      "message": "Method not found.",
      "status": "NOT_FOUND"

рдЖрдВрддрд░рд┐рдХ рдмрдЧ рд╕рдВрджрд░реНрдн: 122552119

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ @tinaliang рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рд╕рдорд░реНрдерди рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рд╕рдордп рдХреЛрдИ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ...

рдкрд┐рдЫрд▓реЗ рджрд┐рдиреЛрдВ рд╕реЗ рдореЗрд░реА рдЦреЛрдЬ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЬреАрд╕реАрдкреА рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ https://cloud.google.com/functions/ рдЬреЛ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рддреИрдирд╛рддреА gcloud CLI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ) рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрд╕рд▓реА рдХрд╛рдордХрд╛рдЬ рдирд╣реАрдВ рд╣реИ ... рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ :)

#1175 . рджреНрд╡рд╛рд░рд╛ рдбреБрдкреНрд▓реАрдХреЗрдЯ

рдХреНрдпрд╛ рдЕрднреА рддрдХ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ? рдореИрдВрдиреЗ рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдлрд╛рдпрд░рдмреЗрд╕ рдРрдк рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред hosting рдЖрджрд┐ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред functions рд╕рд╣реА рдврдВрдЧ рд╕реЗ рддреИрдирд╛рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдореБрдЭреЗ 404 , рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ, IAM рдХреЗ рднреАрддрд░ рдЙрдЪрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рдеред (рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ cloudbuild рдкрд╛рд╕ "Firebase Admin" рдФрд░ "API Keys Admin" рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВред) рдЗрд╕ рдЯрд┐рдХрдЯ рдХреА рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП

рдЕрднреА рддрдХ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@mbleeigh рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЕрднреА рддрдХ рдлрд╛рдпрд░рдмреЗрд╕ рд╕реАрдПрд▓рдЖрдИ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рд╣рдо рдЗрд╕реЗ рд╕реАрдЖрдИ рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВред рддреЛ GOOGLE_APPLICATION_CREDENTIALS рд╕рдорд░реНрдерди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рднреА firebase CLI рдХрдорд╛рдВрдб GOOGLE_APPLICATION_CREDENTIALS рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдЪреНрдЫреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рдкрде рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, test-hosting.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣реА рдХрд░рддреА рд╣реИ)ред

firebase login:ci рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЕрдкрдиреЗ рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдЯреЛрдХрди рдХрд╛

GOOGLE_APPLICATION_CREDENTIALS рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрдирд╛ рд╣рдорд╛рд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдкрд░ рдПрдХ рд╕рдордпрд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред рдЖрдкрдХреЗ рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдПрдбреАрд╕реА рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрд╛ рдХреЗрд╡рд▓ GOOGLE_APPLICATION_CREDENTIALS ?

рдЗрд╕ рд╕реВрддреНрд░ рдкрд░ рдХреЛрдИ рднреА: рдпрджрд┐ рдЖрдк рд╕рд╛рд╣рд╕реА рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдЖрдк #1463 рдкрд░ рд╢рд╛рдЦрд╛ рдХреЛ рдЖрдЬрдорд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЛ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрджреНрджреЛрдВ рдХреЛ рд╕реБрд▓рдЭрд╛ рд▓рд┐рдпрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреБрдЫ рдмрд╛рд╣рд░реА рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

@mbleeigh firebase apps:list web рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдб рдореЗрдВ рд░реБрдХ-рд░реБрдХ рдХрд░ рдЖрдзреЗ рд╕рдордп рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдбрд┐рдмрдЧ рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рд╕реЗ рд╣рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред рдХреНрдпрд╛ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

[2020-02-13T21:25:55.987Z] ----------------------------------------------------------------------
[2020-02-13T21:25:55.991Z] Command:       /usr/local/bin/node /workspace/node_modules/.bin/firebase apps:list web -j --project=projectName --debug
[2020-02-13T21:25:55.991Z] CLI Version:   7.12.1
[2020-02-13T21:25:55.991Z] Platform:      linux
[2020-02-13T21:25:55.991Z] Node Version:  v10.18.0
[2020-02-13T21:25:55.992Z] Time:          Thu Feb 13 2020 21:25:55 GMT+0000 (Coordinated Universal Time)
[2020-02-13T21:25:55.992Z] ----------------------------------------------------------------------

рд╕рд╛рде рд╣реА, @mbleeigh firebase use projectName рдХрдорд╛рдВрдб рднреА рд░реБрдХ-рд░реБрдХ рдХрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рд╣реА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдЦреАрдВрдЪрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ:

[2020-02-13T21:49:41.050Z] ----------------------------------------------------------------------
[2020-02-13T21:49:41.055Z] Command:       /usr/bin/node /directory/node_modules/.bin/firebase --debug use projectName
[2020-02-13T21:49:41.056Z] CLI Version:   7.12.1
[2020-02-13T21:49:41.056Z] Platform:      linux
[2020-02-13T21:49:41.056Z] Node Version:  v10.16.3
[2020-02-13T21:49:41.056Z] Time:          Thu Feb 13 2020 21:49:41 GMT+0000 (Coordinated Universal Time)
[2020-02-13T21:49:41.056Z] ----------------------------------------------------------------------
[2020-02-13T21:49:41.057Z] 
[2020-02-13T21:49:41.073Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2020-02-13T21:49:41.073Z] > attempting to authenticate via app default credentials
[2020-02-13T21:49:41.669Z] TypeError: Cannot create property 'refresh_token' on string 'Not Found
'
    at /directory/node_modules/google-auto-auth/node_modules/google-auth-library/lib/auth/oauth2client.js:208:28
    at /directory/node_modules/google-auto-auth/node_modules/google-auth-library/lib/auth/computeclient.js:85:7
    at Request._callback (/directory/node_modules/google-auto-auth/node_modules/google-auth-library/lib/transporters.js:106:7)
    at Request.self.callback (/directory/node_modules/request/request.js:185:22)
    at Request.emit (events.js:198:13)
    at Request.EventEmitter.emit (domain.js:448:20)
    at Request.<anonymous> (/directory/node_modules/request/request.js:1161:10)
    at Request.emit (events.js:198:13)
    at Request.EventEmitter.emit (domain.js:448:20)
    at IncomingMessage.<anonymous> (/directory/node_modules/request/request.js:1083:12)
    at Object.onceWrapper (events.js:286:20)
    at IncomingMessage.emit (events.js:203:15)
    at IncomingMessage.EventEmitter.emit (domain.js:448:20)
    at endReadableNT (_stream_readable.js:1145:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)

10/02/20 рддрдХ рдореИрдВрдиреЗ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдлрд╛рдпрд░рдмреЗрд╕ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдбрдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд░реБрдХ-рд░реБрдХ рдХрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдпрд╣ рдкрд╣рд▓реЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд▓рдЧрд╛рддрд╛рд░ рдареАрдХ рдерд╛ рдФрд░ рдЕрдм рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдирдпрд╛ рд╕реЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдореЗрдВ рд╕реМрдВрдкрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд░ рд╕рдХреЗред рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЧрдИ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рдЕрдзрд┐рдХрд╛рдВрд╢ рддреИрдирд╛рддреА рдмрд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ

рдиреАрдЪреЗ рдмрд┐рд▓реНрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИ рдФрд░ рдЬрдм рд╡реЗ рдЕрдЪрд╛рдирдХ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рд▓рдЧреЗ:

image

рдбреАрдмрдЧ рддреНрд░реБрдЯрд┐ рдЙрдкрд░реЛрдХреНрдд рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИ:

[2020-02-16T07:30:46.905Z] ----------------------------------------------------------------------
[2020-02-16T07:30:46.908Z] Command:       /usr/local/bin/node /home/node/.npm-global/bin/firebase deploy --only hosting -P project-production --debug
[2020-02-16T07:30:46.908Z] CLI Version:   7.8.1
[2020-02-16T07:30:46.908Z] Platform:      linux
[2020-02-16T07:30:46.909Z] Node Version:  v12.13.1
[2020-02-16T07:30:46.909Z] Time:          Sun Feb 16 2020 07:30:46 GMT+0000 (Coordinated Universal Time)
[2020-02-16T07:30:46.910Z] ----------------------------------------------------------------------
[2020-02-16T07:30:46.910Z] 
[2020-02-16T07:30:46.920Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2020-02-16T07:30:46.920Z] > attempting to authenticate via app default credentials
[2020-02-16T07:30:47.023Z] TypeError: Cannot create property 'refresh_token' on string 'Not Found
'
    at /home/node/.npm-global/lib/node_modules/firebase-tools/node_modules/google-auto-auth/node_modules/google-auth-library/lib/auth/oauth2client.js:208:28
    at /home/node/.npm-global/lib/node_modules/firebase-tools/node_modules/google-auto-auth/node_modules/google-auth-library/lib/auth/computeclient.js:85:7
    at Request._callback (/home/node/.npm-global/lib/node_modules/firebase-tools/node_modules/google-auto-auth/node_modules/google-auth-library/lib/transporters.js:106:7)
    at Request.self.callback (/home/node/.npm-global/lib/node_modules/firebase-tools/node_modules/request/request.js:185:22)
    at Request.emit (events.js:210:5)
    at Request.EventEmitter.emit (domain.js:475:20)
    at Request.<anonymous> (/home/node/.npm-global/lib/node_modules/firebase-tools/node_modules/request/request.js:1161:10)
    at Request.emit (events.js:210:5)
    at Request.EventEmitter.emit (domain.js:475:20)
    at IncomingMessage.<anonymous> (/home/node/.npm-global/lib/node_modules/firebase-tools/node_modules/request/request.js:1083:12)
    at Object.onceWrapper (events.js:299:28)
    at IncomingMessage.emit (events.js:215:7)
    at IncomingMessage.EventEmitter.emit (domain.js:475:20)
    at endReadableNT (_stream_readable.js:1184:12)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)

Error: An unexpected error has occurred.

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ https://github.com/firebase/firebase-tools/issues/1970 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ (рдЕрд░реНрдерд╛рддреН, рдкреБрд░рд╛рдиреЗ v1beta1 рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХрд╛ рдмрд╣рд┐рд╖реНрдХрд░рдг, рдЬреЛ рдЕрднреА рднреА рдкреБрд░рд╛рдиреЗ gcloud Auth рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдлрд╛рдпрд░рдмреЗрд╕ рд╕реАрдПрд▓рдЖрдИ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА ..)

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

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

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

laurenzlong picture laurenzlong  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

SJAnderson picture SJAnderson  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

adam-remotesocial picture adam-remotesocial  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ