要使用谷歌驱动器的API,我必须玩OAuth2.0authentication。 我对此有了一些疑问。 客户端ID和客户端密钥用于识别我的应用程序。 但是,如果它是一个客户端应用程序,它们必须被硬编码。 所以,每个人都可以反编译我的应用程序,并从源代码中提取它们。 这是否意味着一个不好的应用程序可以假装使用良好的应用程序的客户端ID和秘密是一个很好的应用程序? 所以用户会显示一个屏幕,要求授予一个好的应用程序的权限,即使它实际上是由一个不好的应用程序所要求的? 如果是,我该怎么办? 或者其实我不应该担心这个? 在移动应用程序中,我们可以将webviewembedded到我们的应用程序中。 而且很容易在webview中提取密码字段,因为请求权限的应用程序实际上是一个“浏览器”。 那么,移动应用程序中的OAuth没有客户端应用程序无法访问服务提供者的用户凭据的好处?
我正在尝试让服务器应用程序定期从我自己的GA帐户中提取Google Analytics数据。 请注意,这是个人服务器端应用程序访问我自己的数据,即没有最终用户访问此应用程序。 因此,我在Google API Console中将应用程序注册为服务应用程序 ,该应用程序给了我一个客户端ID和一个私钥 。 我的理解是服务应用程序不使用应用程序秘密和redirectURL,因为在此服务器到服务器身份validationstream程中没有最终用户。 事实上,Google API控制台并没有给我提供秘密,也没有提示我提供redirecturl。 不幸的是,我不知道如何在Google的PHP客户端API中validation我的服务应用程序。 有关于与最终用户validationWeb应用程序的大量文档。 Google的文档表明可以通过使用私钥对JWT请求进行签名来validation服务器到服务器 。 我只是无法弄清楚如何在PHP客户端API中执行操作(尽pipe我已经浏览了源代码,并且确实有一个用私钥签名请求的脚本 )。 我在这里错过了什么? 如何使用我的私钥和Google PHP客户端API对服务应用程序执行身份validation? 编辑清晰
我一直在玩Google Analytics API(V3),并且遇到了som错误。 首先,一切都设置正确,并与我的testing帐户。 但是,当我想从另一个configuration文件ID(相同谷歌Accont / GA帐户)抓取数据时,我得到一个403错误。 奇怪的是,一些GA帐户的数据将返回数据,而其他产生这个错误。 我已经撤销了令牌并且再次validation了一次,现在好像我可以从我的所有帐户中获取数据。 问题解决了? 不。 随着访问密钥到期,我将再次遇到同样的问题。 如果我理解正确的话,可以使用resfreshToken来获得一个新的身份validation。 问题是,当我运行: $client->refreshToken(refresh_token_key) 将返回以下错误: Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }' 我已经检查了refreshToken方法背后的代码,并将请求追踪回“apiOAuth2.php”文件。 所有参数都正确发送。 在方法中,grant_type被硬编码为'refresh_token',所以我很难理解错误。 参数数组如下所示: Array ( [client_id] => *******-uqgau8uo1l96bd09eurdub26c9ftr2io.apps.googleusercontent.com [client_secret] => ******** [refresh_token] => 1\/lov250YQTMCC9LRQbE6yMv-FiX_Offo79UXimV8kvwY [grant_type] => refresh_token ) 程序如下。 $client = new apiClient(); $client->setClientId($config['oauth2_client_id']); $client->setClientSecret($config['oauth2_client_secret']); $client->setRedirectUri($config['oauth2_redirect_uri']); $client->setScopes('https://www.googleapis.com/auth/analytics.readonly'); […]