Gmail API Android`Quickstart`击中了一堵砖墙

问题描述 投票:-1回答:1

google demo提出单个API请求。我曾尝试使用此代码作为更真实世界场景(多个不同的API调用)的基础,但一直在打砖墙。演示的结构非常困难。

考虑发出API请求的代码:

private void getResultsFromApi() {
    if (! isGooglePlayServicesAvailable()) {
        acquireGooglePlayServices();
    } else if (mCredential.getSelectedAccountName() == null) {
        chooseAccount();
    } else if (! isDeviceOnline()) {
        mOutputText.setText("No network connection available.");
    } else {
        new MakeRequestTask(mCredential).execute();
    }
}

getResultsFromApi()在API请求之前做了很多auth的事情。应该在每个API请求之前完成吗?

getResultsFromApi()可以启动一个活动(在chooseAccount()中),这意味着onActivityResult()将(重新)调用getResultsFromApi()以最终获得API请求。

事实上,在代码中实际上有5次调用getResultsFromApi(),它们共同实现了单个API请求的auth!它可能是必要的,但它最终是意大利面。

这使得演示无法以其当前形式进行概括。假设我想要第二个按钮发出一些其他API请求。无需重大改写即可完成

任何人都可以建议我如何重新组织演示代码,以使其在现实世界中可用?

谢谢

android api google-oauth
1个回答
0
投票

getResultsFromApi不执行“很多东西”它只是检查所有内容是否正确完成,如演示项目中所述:

在验证满足所有前提条件后,尝试调用API

如果条件不满足,将调用另一个函数来解决此问题,例如选择一个帐户。然后将再次调用getResultsFromApi来完成您启动的调用,而不是满足所有前提条件。

您没有强制执行所有检查,但如果不满足前提条件,您的呼叫将失败。

© www.soinside.com 2019 - 2024. All rights reserved.