如何检查Google客户端API密钥是否对Google PHP API库有效?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查Google客户端API密钥是否对Google PHP API库有效?相关的知识,希望对你有一定的参考价值。

我已在php应用程序中正确实现了Google API客户端。我能够连接到我想要的服务。

但现在我想检查用户输入的API密钥是否有效。

我查看了Google_Client()类公开的方法,但我认为我不确定如何检查。

下面是我的类中创建客户端的方法:

    private function client( $api_key ) {

        $client = new Google_Client();
        $client->setClassConfig( 'Google_Cache_File', 'directory',  $this->cache_dir );
        $client->setDeveloperKey( $api_key );
        $client->setApplicationName( $this->name );
        $client->setScopes( array( Google_Service_Calendar::CALENDAR_READONLY ) );
        $client->setAccessType( 'online' );

        return $client;
    }

我想制作另一种方法来判断使用的API密钥是否有效......

    public function validate_api_key( $api_key ) {
        $client = $this->client( $api_key );

        // What should I use here to check if $api_key is valid?

        if ( $client ) {
            return true;
        }
        return 'error';
    }

或者我应该连接到服务,然后检查我是否有读取权限?但我相信有一种更简单,更好的方法可以做到这一点......

答案

你可以用javascript检查;错误的密钥将始终设置未记录的属性window.G_INCOMPAT。用function alert() {}进行猴子修补可能需要摆脱alert()的无效密钥,这只会干扰设置密钥的过程。

这个answer有一个关于alert()的有趣方法

还有一个记录的功能,可以挂钩:https://developers.google.com/maps/documentation/javascript/events#auth-errors

如果它真的必须是PHP,你仍然可以生成一些JS并使用PhantomJS运行它。

看到我的Github:php-phantomjs ......这不是不可能的。

以上是关于如何检查Google客户端API密钥是否对Google PHP API库有效?的主要内容,如果未能解决你的问题,请参考以下文章

使用服务帐户密钥对 Google Photos API 进行身份验证?

Android Manifest 未向 Google Maps 提供 API 密钥

我需要哪些 API 密钥才能让 cordova 应用程序使用 Google 地图?

如何禁用对 Google Cloud Build 的 Github 检查

如何将 goog.payments.inapp.buy 与 luciferous jwt 一起使用?

限制对 Google API 的 Android 密钥的使用