首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FCM v1:如何使用Go获取访问令牌?

FCM v1:如何使用Go获取访问令牌?
EN

Stack Overflow用户
提问于 2017-11-22 10:04:54
回答 3查看 2.5K关注 0票数 5

为了用Go发送Firebase消息,我们需要将访问令牌放置在HTTP请求头中。

在Firebase文档中,有关于如何使用Node.JS、Python和Java检索访问令牌的示例

https://firebase.google.com/docs/cloud-messaging/auth-server

有人可以使用Go显示获取访问令牌吗?

似乎有很多关于Firebase/Google身份验证的Go包。很难理解应该使用哪一种:

  • firebase.google.com/go
  • firebase.google.com/go/auth
  • github.com/firebase/firebase-admin-go
  • google.golang.org/api/option
  • golang.org/x/oauth2
  • golang.org/x/oauth2/google
  • github.com/google/google-api-go-client
EN

回答 3

Stack Overflow用户

发布于 2017-12-29 19:14:11

我正在开发,以添加FCM。

现在它几乎完成了,我必须编写测试和集成测试,您可以在这里检查代码:https://github.com/chemidy/firebase-admin-go/tree/fcm/messaging

我将在下周完成测试并发送公关(在ios + android +web上测试有点棘手)

票数 1
EN

Stack Overflow用户

发布于 2021-02-03 08:04:16

FCM httpv1使用JSON文件作为凭证。

先下载,然后把它移到你的项目中。在防火墙中下载JSON凭据

第二,做:

代码语言:javascript
复制
go get "golang.org/x/oauth2/google"

然后使用此方法获取令牌。

代码语言:javascript
复制
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方法中调用它:

代码语言:javascript
复制
tp, err := newTokenProvider("yourJSONFileLocation")
if err != nil {
    return nil, err
}
token, err := tp.token()
if err != nil {
    return nil, err
}

最后,将其添加到标题中:

代码语言:javascript
复制
r.Header.Add("Authorization", "Bearer "+token)

好了。

票数 1
EN

Stack Overflow用户

发布于 2019-11-10 23:42:07

我是被使用的头授权

代码语言:javascript
复制
  @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添加..。

如何更改当前授权:承载者

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47431757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档