首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取带有react的访问令牌-本机-google-signin

获取带有react的访问令牌-本机-google-signin
EN

Stack Overflow用户
提问于 2020-06-03 12:44:50
回答 2查看 1.1K关注 0票数 2

我需要我的应用程序从gmail中找到用户联系人。所以我需要使用来自google联系人api的api

代码语言:javascript
复制
https://www.google.com/m8/feeds/contacts/{userEmail}/full

当我向这个网址发送GET请求时,我得到:

代码语言:javascript
复制
{
  "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "status": "PERMISSION_DENIED"
  }
}

我的问题是如何让react-native-google-signin?accessToken请求这个api。我已经试过了

代码语言:javascript
复制
GoogleSignin.getCurrentUser().then(infos => console.log(infos));

我得到这个功能的用户信息,如姓名,照片,电子邮件.我得到一个字段idToken,但是当我将这个令牌添加到我的头请求中时,我总是得到代码403,所以我认为这不是访问令牌。

您能帮我找到访问令牌吗?还是有其他的解决方案可以直接找到与react本机google-signin的联系人?

编辑:也尝试过

代码语言:javascript
复制
GoogleSignin.getTokens().then((res) => { console.log(res); });

但是没有记录我不知道为什么

EN

回答 2

Stack Overflow用户

发布于 2020-09-15 17:39:52

在使用accessToken登录后,可以通过调用GoogleSignIn.getTokens()方法来获得GoogleSignIn.signIn()。然后,当向accessToken发送GET请求时,可以将返回的GET附加到https://www.google.com/m8/feeds/contacts/default/full头。

警告:-- Google 现在已不再推荐,并计划于2021年6月15日日落。应用程序应该使用人民API。从迁移指南开始。见正式声明

票数 3
EN

Stack Overflow用户

发布于 2020-06-03 18:52:13

你可以试试这个函数--它对我很好

代码语言:javascript
复制
_signIn = async () => {
    try {
        await GoogleSignin.hasPlayServices();
        const userInfo = await GoogleSignin.signIn();

                response: {
                    first_name: userInfo.user.givenName,  
                    social_id: userInfo.user.id, last_name: userInfo.user.familyName, email: userInfo.user.email
                }

            // console.log('_signIn userInfo', userInfo);


    } catch (error) {
        if (error.code === statusCodes.SIGN_IN_CANCELLED) {
            // console.log('_signIn error.code 1', error.code);
            // user cancelled the login flow
        } else if (error.code === statusCodes.IN_PROGRESS) {
            // console.log('_signIn error.code 2 ', error.code);
            // operation (f.e. sign in) is in progress already
        } else if (error.code === statusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
            // console.log('_signIn error.code 3', error.code);
            // play services not available or outdated
        } else {
            // console.log('_signIn else', error);
            // some other error happened
        }
    }
};
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62173155

复制
相关文章

相似问题

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