要使用Go发送Firebase Cloud Messaging,我们需要将访问令牌放在HTTP请求标头中。
在Firebase文档中, 有关如何使用 Node.JS , Python 和 Java 检索访问令牌的示例:
https://firebase.google.com/docs/cloud-messaging/auth-server
任何人都可以使用开始来显示获取访问令牌吗?
似乎有许多关于Firebase / Google身份验证的Go包。理解应该使用哪些是非常令人困惑的:
答案 0 :(得分:1)
我正在使用go firebase SDK来添加FCM HTTP v1。
现在它已经差不多完成了,我必须编写测试和集成测试,你可以在这里查看代码:https://github.com/chemidy/firebase-admin-go/tree/fcm/messaging
我将在下周完成测试并发送PR,(在ios + android + web上测试有点棘手)
答案 1 :(得分:0)
我通过使用volly放置标题授权
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headerMap = new HashMap<String, String>();
headerMap.put("Content-Type", "application/json");
headerMap.put("Authorization", "Bearer " + key);
Log.v(TAG,"getHeaders "+headerMap);
return headerMap;
}
但是发送Authorization = Bearer Add ..
如何更改为当前 授权:承载者
答案 2 :(得分:0)
FCM httpv1 使用 JSON 文件作为它的凭据。
先下载它,然后将其移动到您的项目中。 download JSON credentials in your firebase
第二,做:
go get "golang.org/x/oauth2/google"
然后用这个方法获取token
const firebaseScope = "https://www.googleapis.com/auth/firebase.messaging"
type tokenProvider struct {
tokenSource oauth2.TokenSource
}
// newTokenProvider function to get token for fcm-send
func newTokenProvider(credentialsLocation string) (*tokenProvider, error) {
jsonKey, err := ioutil.ReadFile(credentialsLocation)
if err != nil {
return nil, errors.New("fcm: failed to read credentials file at: " + credentialsLocation)
}
cfg, err := google.JWTConfigFromJSON(jsonKey, firebaseScope)
if err != nil {
return nil, errors.New("fcm: failed to get JWT config for the firebase.messaging scope")
}
ts := cfg.TokenSource(context.Background())
return &tokenProvider{
tokenSource: ts,
}, nil
}
func (src *tokenProvider) token() (string, error) {
token, err := src.tokenSource.Token()
if err != nil {
return "", errors.New("fcm: failed to generate Bearer token")
}
return token.AccessToken, nil
}
然后在您的 FCM-Send 方法中调用它:
tp, err := newTokenProvider("yourJSONFileLocation")
if err != nil {
return nil, err
}
token, err := tp.token()
if err != nil {
return nil, err
}
最后,将其添加到标题:
r.Header.Add("Authorization", "Bearer "+token)
完成。