首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GoogleAuthUtil.getToken()已弃用如何获取accessToken

从2019年8月开始,GoogleAuthUtil.getToken()已被弃用

步骤如下:

  1. 添加依赖

确保在app模块build.gradle文件中添加以下依赖项:

代码语言:javascript
复制
implementation 'com.google.api-client:google-api-client:1.31.5'
implementation 'com.google.oauth-client:google-oauth-client-jetty:1.31.5'
implementation 'com.google.apis:google-api-services-oauth2:v2-rev157-1.25.0'
  1. 获取凭据

将您的OAuth 2.0客户端ID(client_id)添加到项目中。 要生成OAuth 2.0客户端ID,请按照以下步骤操作:

  • 打开Google Cloud控制台(https://console.cloud.google.com/)并登录。
  • 创建一个新项目
  • 导航到“API和服务”>“凭据”。
  • 单击创建凭据并选择OAuth客户端ID。这会生成一个客户端ID和一个客户端密钥。
  1. 请求访问令牌

要使用GoogleAuthUtil.getToken()的替代方法获取访问令牌,请使用以下代码:

代码语言:javascript
复制
import android.content.Context;
import android.util.Log;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;
import com.google.api.services.oauth2.Oauth2;
import com.google.api.services.oauth2.model.TokenResponse;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Arrays;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private static final String CLIENT_SECRET_FILE = "/client_secret.json";
    private static final List<String> SCOPES = Arrays.asList("https://www.googleapis.com/auth/userinfo.profile");
    private static final String TOKENS_DIRECTORY_PATH = "tokens";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    String accessToken = getAccessToken();
                    Log.i("MainActivity", "Access token: " + accessToken);
                } catch (Exception e) {
                    Log.e("MainActivity", "Failed to get access token", e);
                }
            }
        }).start();
    }

    private String getAccessToken() throws Exception {
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance(), new InputStreamReader(getAssets().open(CLIENT_SECRET_FILE)));
        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(new NetHttpTransport(), JacksonFactory.getDefaultInstance(), clientSecrets, SCOPES)
                .setDataStoreFactory(new FileDataStoreFactory(getFilesDir(), FileDataStoreFactory.getDefaultInstance().getDefaultDataStore(TOKENS_DIRECTORY_PATH)))
                .setAccessType("offline")
                .build();
        TokenResponse response = flow.newTokenRequest("YOUR_REFRESH_TOKEN").setRedirectUri("urn:ietf:wg:oauth:2.0:oob").execute();
        return response.getAccessToken();
    }
}

在这里,替换CLIENT_SECRET_FILE的值为你的客户端密钥文件名.json。此外,替换YOUR_REFRESH_TOKEN的值为从Google获取的刷新令牌。

  1. 刷新访问令牌

请注意,访问令牌将过期。因此,您需要使用刷新令牌定期刷新访问令牌。要刷新访问令牌,只需使用相同的GoogleAuthorizationCodeFlow实例调用newTokenRequest().setRefreshToken().execute()

现在,在需要访问令牌的地方,您可以使用上面提到的getAccessToken()方法来获取访问令牌。确保在后台线程上运行这些操作,以避免在主线程上执行网络操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 为什么以及如何弃用仪表板

    策略只有在维护良好时才能发挥作用,而维护的一个关键部分是弃用。 虽然在公司内部,人工质量保证可能是最政治正确的方法,但它是最手动和最难以优先考虑的方法。...我提议建立一种自动化的仪表板弃用策略,它只需构建一次并需要极少的人工支持。 自动化的仪表板弃用策略会获取所有的BI元数据,并自动删除长时间未使用的可视化。...在开始弃用努力之前,要记录并传达保持清洁的BI实例对整个组织的好处(…或者如果你愿意的话,可以传阅本文)。目的不是删除其他人的工作,而是使公司中的每个人能够更快地从数据中获取洞察。...为自动通信创建一个弃用的Slack频道。任何使用BI工具的用户都应该被添加到这个频道中。 查询最近X-7天内未访问的可视化并发送Slack消息。...然而,在过渡期间,一个中间地带可能是直接从集中式数据目录导出BI元数据,并自己编写弃用逻辑。这种方法仍然需要处理API等内容。

    11910

    Kubernetes:如何自动检测和处理弃用的API

    在最近几个K8s版本中保留了一些弃用的API,最终在Kubernetes 1.16版本中被完全删除。...如何解决弃用产生的问题 最简单的方法是安装: sh -c "$(curl -sSL 'https://git.io/install-kubent')" 这将把kubent的最新版本安装到/usr/local...google-cloud/kubernetes-1-16-api-deprecations-and-changed-defaults-e53ccc5c73d5 以前使用的kubectl convert命令现已弃用...希望这将帮助你检测和处理Kubernetes集群中弃用的API,以免这些API给你带来任何麻烦。 现在kubent工具还为时过早,如果你觉得它有用,我很乐意听到任何评论和建议。安全的航行!...⛵⛵⛵ 额外参考: Kube-No-Trouble - kubent GitHub仓库 - https://github.com/doitintl/kube-no-trouble 1.16中删除了弃用API

    1.3K10

    Spring Boot -- 如何获取已加载的JAR文件流

    如何根据已加载的类定位到jar?...对于已加载的类,可以通过其对应的Class类的getProtectionDomain()方法获取到对应的文件信息,以获取commons-lang3jar包为例,如清单1所示。...如何读取jar? 对于非jar in jar形式,其获取到的目录是一个真是的物理文件路径,因此可以直接使用File读取,从而拿到文件流,这里不重点关注。...org.springframework.boot.loader.jar.Handler,读取的主要功能为Handler中实现的openConnection方法,因此当在项目代码中想要读取jar in jar格式的架包,则可以用该...文章标题: Spring Boot -- 如何获取已加载的JAR文件流 文章链接: https://mrdear.cn/2019/03/19/framework/spring/在jar中获取jar文件流

    5.6K10

    如何获取Hive正在执行或已结束的SQL语句

    本文主要介绍两种方式来获取Hive正在执行或者已结束的的MapReduce作业的SQL语句,一种是通过MapReduce API获取执行作业的xml配置文件,另一种是通过Cloudera Manager...---- 1.通过YARN执行作业的xml配置文件 1.通过Hue执行SQL查询,Job Browser页面可以获取该SQL执行的ApplicationID,如下: image.png 2.通过ApplicationID...获取正在执行作业的配置信息,执行如下: curl -H "Accept: application/json" -X \ GET http://master:8088/proxy/application_...,可获取运行中Hive作业的SQL语句,该信息对应HDFS的 /user/$USER/.staging/$JOBID/job.xml文件 3.如果作业执行完成将接口改为JobHistory的API...1534299721148_0845/conf > b.xml image.png 通过hive.query.string属性过滤查看b.xml文件 image.png 通过JobHistory的API接口,可获取

    10K00

    如何获取Hive正在执行或者已结束的的MapReduce作业的SQL语句

    Hive正在执行或者已结束的的MapReduce作业的SQL语句,一种是通过MapReduce API获取执行作业的xml配置文件,另一种是通过Cloudera Manager界面直接查看,第三种是通过...Cloudera Manager的API来获取。...测试环境 1.操作系统RedHat7.3 2.CM和CDH版本为5.13.1 3.集群已启用Kerberos 2.通过YARN执行作业的xml配置文件获取 ---- 1.使用fayson用户登录hue执行...SQL查询 [1qilvqo5cv.jpeg] 2.通过SQL的ApplicationID获取到作业的配置信息 curl -H "Accept: application/json" -X \ GET..._0029/conf > a.xml (可左右滑动) [wzdxichp6d.jpeg] 3.通过hive.query.string属性过滤查看a.xml文件 [bljuptg27s.jpeg] 通过获取接口获取运行中

    6.4K50

    开源库Magicodes.WeChat.SDK总体介绍

    获取公众号配置——Config_GetWeChatConfigByKey 根据Key从数据库获取: ? The Same,也可以写死: ?...简单说明如下所示: Config_GetWeChatPayConfigByKey:获取支付配置,可以在此编写获取支付配置的逻辑 APIFunc_TemplateMessageApi_Create:模板消息发送成功函数...,可以在此记录发送日志 APIFunc_QRCodeApi_Create:已弃用 APIFunc_GetAccessToken:获取AccessToken。...用于中控服务器模式,即从中控服务器获取Accesstoken 配置管理器——WeChatConfigManager WeChatConfigManager为配置管理器,顾名思义,就是管理各种配置和凭据...这里配置了构造器,然后注册了两个函数,分别用于获取Key以及获取公众号配置。 使用 ? 如上面所示,通过WeChatApiContext获取接口,然后调用基本无需额外传递配置参数和Token等。

    89330

    Spring Boot + OAuth2.0 实现微信扫码登录,这才叫优雅!!

    第三步:通过access_token调用接口 获取access_token后,进行接口调用,有以下前提: access_token有效且未超时; 微信用户已授权给第三方应用帐号相应接口作用域(scope... wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();         try {             //通过code获取access_token... String qrUserInfo(@RequestParam("code") String code) {         WxMpOAuth2AccessToken wxMpOAuth2AccessToken... = new WxMpOAuth2AccessToken();         try {             //通过code获取access_token             wxMpOAuth2AccessToken...Java 18 正式发布,finalize 被弃用。。 Spring Boot Admin 横空出世! Spring Boot 学习笔记,这个太全了!

    5.5K32

    Java实现QQ登录和微博登录

    既然是对接第三方登录,那就免不了如何将用户信息保存。...获取openId 根据accessToken调接口获取用户的openId,特别注意这个openId是相对于QQ号+appId唯一的,换句话说同一个QQ号登录2个不同appId时获取到的openId是不同的...后面无非就是如何插入数据库、如何保存token、写入session等。...QQ互联有个特大的bug,有时候显示已登录但是点击授权管理一直报错,此时只需要退出重新登录即可; 授权之后用户可能会在过期之前提前取消授权; 微信搜索 Web项目聚集地 获取更多实战教程。...获取用户头像等信息 // 用uid和accessToken换取用户信息 String result = HttpsUtil.get("https://api.weibo.com/2/users/show.json

    4.3K20

    Java 近期新闻:JDK 2 进入Rampdown阶段一、JDK 24专家组成立、Apache NetBeans 22发布

    这意味着主线源代码库已 fork 到 JDK 稳定性库,不会再为 JDK 23 添加额外的 JEP。...和 switch 中的原始类型(预览) JEP 466: 类文件 API(第二次预览) JEP 467: Markdown 文档注释 JEP 469: 向量 API(第八次孵化) JEP 471: 弃用...创建了默认方法来桥接新方法,并将旧方法标记为弃用,计划在 Spring Shell 3.4.x 中将其移除。...3.8.0)发布,包含了文档改进和依赖项升级,并解决了一些重要问题,例如:在 Azure Functions HTTP 扩展中使用错误的字符集会导致 HTTP 请求正文损坏;在 OIDC 客户端使用 @AccessToken...概述社区贡献机会,明确个人和组织如何为 MVP 的开发做出贡献。 强调贡献方法,贡献可能以各种形式出现,例如有些组织可能选择贡献工程资源,有些可能选择为核心开发团队提供财务支持。

    16810
    领券