来自Google's API explorer并在我的SPA上使用使用OAuth 2.0授权请求,我看到 YOUR_API_KEY 以某种方式来自登录并使用在随后的调用中:
https://www.googleapis.com/youtube/v3/channels?part=statistics&id=UCE5Au4LfcBHxTQR_yLbncrQ&key={YOUR_API_KEY}
我如何获得此密钥?我正在使用VueJS应用程序中的GAPI.auth2.getAuthInstance()工作。
我可以在Google samples中看到 gapi 。但我只想使用此用户的会话API密钥进行简单的直接fetch
调用。我不想使用gapi.client
,或者我别无选择?
更新:在Oauth2 playground上,我看到它指的是客户机密1。我根本不明白这一点,因为没有后端的SPA,你不想存储秘密!为什么客户ID和来源不够?
apiKey 与 clientId 一起使用的another confusing example(未使用秘密)。为什么 clientId 不够,因为它受原点限制?!
答案 0 :(得分:3)
通常,在Web上有两种类型的OAuth流来获取access_token。一个称为implicit flow,另一个称为authorization code flow。
对于代码流,您需要client_secret才能使用access_token交换代码。这通常发生在服务器端 对于隐式流,您可以简单地给一个client_id来获取access_token,它被设计为在客户端工作。
您附加的屏幕截图是OAuth流程部分,您可以使用access_token与auth代码进行交换。因为游乐场正在使用授权代码流。
您正在寻找的应该是隐含的流程。
要在YouTube客户端库(或任何Google javascript客户端库)中实现此功能,您不需要client_secret。您可以在此处找到使用Google云端硬盘的完整示例: https://github.com/GoogleChrome/google-sign-in/blob/master/static/scripts/authorization_client.js