백엔드 측에서 Firebase Cloud Messaging의 REAL 구현
왜요?
푸시 알림을 구현하려는 경우 모든 firebase 문서에서 사용이 필요하다고 알려줍니다the new http v1.1 api. 이 이전 API는 더 많은 API 키(source here)를 생성하지 않기 때문에 가까운 장래에 이전 API가 사용되지 않을 것이므로 다음을 사용하세요. 새로운 것 새로운 앱에 대한 비판
백엔드가 사용 가능한 API 라이브러리 목록에 없거나 Google API 라이브러리에 있는 다른 모든 항목 없이 직접 구현하려는 경우 이 게시물이 있습니다.
전제 조건
Firebase 콘솔의 Create your project
새 개인 키를 생성하고 파일을 다운로드합니다
핵심 문제
fcm api url에 대한 게시물에서 send message to multiple devices을 이미 본 경우 알림을 승인하기 위해 Bearer api 토큰이 필요했고 문제는 여기, htf! API 토큰을 만들 수 있습니까? 페이지와 여기 어려운 부분은 어디에도 없습니다.
나에게 문제를 주지 말고 해결책을 줘
간단하지만 Google은 친구가 자신의 문서를 읽기를 원합니다. 여기에 요약이 있으니 걱정하지 마세요.
첫 번째 단계는 Cloud Console의 Api 자격 증명 탭으로 이동합니다.
Change to your project in top, its important!
Firebase 프로젝트는 이미 OAuth2.0 클라이언트를 생성했으므로 클라이언트를 열고 데이터를 확인하기만 하면 됩니다. 두 가지가 필요합니다.
you need implement an jwt cycle in your backend and use the access token and refresh when expires
.그리고 이것이 비밀입니다!, 이것을 엽니다 Google OAuthPlayground (uri를 리디렉션하기 위해 추가한 것과 동일한 링크)
이게 뭐야?
OAuth2.0을 사용하는 놀이터입니다. 지침을 확인하여 무슨 일이 일어나고 있는지 확인하십시오.
페이지에서 설정 패널(오른쪽에 있음! 큰 기어 아이콘)을 열고 "자신의 OAuth 자격 증명 사용"상자를 선택합니다. 예, 여기에 클라이언트 ID와 클라이언트 암호를 추가한 다음 왼쪽 하단에 추가합니다. Google FCM 권한 URL
https://www.googleapis.com/auth/firebase.messaging
그리고 Authorize APIs(API 승인) 파란색 버튼을 클릭하면 Google 화면에서 클래식 인증으로 이동하고 허용 또는 거부할 수 있습니다. 물론 허용을 클릭하세요.
다음 화면에서 모든 토큰이 설정되었습니다. 토큰에 대한 인증 코드 교환 파란색 버튼을 클릭하면 access_token 및 refresh_token(및 추가 데이터)을 가져온 다음 다음 화면으로 이동하지만 뒤로 돌아갈 수 있습니다. 이 버튼에서
돌아가서 액세스 토큰 새로 고침 회색 버튼을 누릅니다. 이것은 당신의 운명, 목표 요청 예제입니다. 새로 고침 토큰, 클라이언트 ID 및 클라이언트 암호를 저장하고 백엔드에서 API에 대한 호출과 그 모든 것을 복제하면 됩니다. 이제 백엔드에서 이 귀중한 푸시 메시지를 더 쉽게 보낼 수 있습니다.
다음은 Elixir에 대한 구현입니다.
defmodule Gooogle.Auth.Jwt do
@tesla_client Tesla.client([
{Tesla.Middleware.BaseUrl, "https://oauth2.googleapis.com"},
Tesla.Middleware.FormUrlencoded
])
defp oauth_refresh_token, do: Application.get_env(:my_app, :firebase)[:refresh_token]
defp oauth_client_id, do: Application.get_env(:my_app, :firebase)[:oauth_client_id]
defp oauth_client_secret, do: Application.get_env(:my_app, :firebase)[:oauth_client_secret]
@spec refresh_token() :: map()
def refresh_token() do
body = %{
client_id: oauth_client_id(),
refresh_token: oauth_refresh_token(),
client_secret: oauth_client_secret(),
grant_type: "refresh_token"
}
%{status: 200, body: body} = Tesla.post!(@tesla_client, "/token", body)
Jason.decode!(body)
end
end
FAQ
https://developers.google.com/oauthplayground
가 아닌 다른 응답을 기다렸다가 즉시 새로 고칠 수 있습니다htf = 겁먹는 방법
Reference
이 문제에 관하여(백엔드 측에서 Firebase Cloud Messaging의 REAL 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nicolkill/the-real-implementation-of-firebase-cloud-messaging-on-the-backend-side-3iib텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)