Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP连接到Google drive API,无需用户交互_Php_Oauth 2.0_Google Drive Api - Fatal编程技术网

使用PHP连接到Google drive API,无需用户交互

使用PHP连接到Google drive API,无需用户交互,php,oauth-2.0,google-drive-api,Php,Oauth 2.0,Google Drive Api,我想使用API将文件上传到Google Drive,但我需要使用cron作业(自动备份webfiles+sql到Google Drive) 这意味着(我想)我需要使用用户交互方法以外的其他方法进行身份验证 我一直在使用的示例是:让我继续,它与用户身份验证一起工作 我希望能得到一些关于如何在没有用户交互的情况下做到这一点的提示,这样它就可以在cronjob上运行 下面是用于身份验证和上传文件的PHP代码(使用手动用户身份验证和单文件上传的工作示例) 要执行此操作,您需要创建一个Google OAu

我想使用API将文件上传到Google Drive,但我需要使用cron作业(自动备份webfiles+sql到Google Drive)

这意味着(我想)我需要使用用户交互方法以外的其他方法进行身份验证

我一直在使用的示例是:让我继续,它与用户身份验证一起工作

我希望能得到一些关于如何在没有用户交互的情况下做到这一点的提示,这样它就可以在cronjob上运行

下面是用于身份验证和上传文件的PHP代码(使用手动用户身份验证和单文件上传的工作示例)


要执行此操作,您需要创建一个Google OAuth2服务帐户。然后,您可以下载一组JSON凭据,应用程序将使用这些凭据进行身份验证,而无需用户交互

以下文章对此进行了描述:

对服务器到服务器应用程序使用OAuth 2.0

然后,您将能够下载以下凭据以在应用程序中使用:

{
    "type":"service_account",
    "project_id":"your-project-id",
    "private_key_id":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "private_key":"-----BEGIN PRIVATE KEY-----\nMIIEv...4XIk=\n-----END PRIVATE KEY-----\n",
    "client_email":"foobar@bazqux.iam.gserviceaccount.com",
    "client_id":"12345678901234567890",
    "auth_uri":"https://accounts.google.com/o/oauth2/auth",
    "token_uri":"https://accounts.google.com/o/oauth2/token",
    "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url":"https://www.googleapis.com/robot/v1/metadata/x509/foobar%40bazqux.iam.gserviceaccount.com"
}
下面是一个Google PHP示例,介绍了如何使用此功能:

您可以在Google API控制台中创建服务帐户,如下所示:


好的,现在我使用OAuth,所以我将尝试服务一。我现在确实运行了一个json文件:$client->setAuthConfig('client_secret.json');所以我想我需要用服务密钥替换它?是的,你应该可以交换文件。注意,上面包含的JSON具有以下属性:
“type”:“service\u account”
。我在上面链接的Google PHP服务帐户示例代码包括以下内容:
$client->setAuthConfig($credentials\u file)在第45行。我使用过谷歌硬盘、工作表、幻灯片和语音API的服务帐户。我会尽快尝试。我必须使用应用服务帐户还是计算服务帐户?我没有看到应用和计算服务帐户之间的任何区别。你能指出你在哪里看到这个吗?我在这里使用“谷歌云平台-IAM&admin”创建它们:。谷歌关于各种用途的文档似乎都指向了这个地方,例如,等等
{
    "type":"service_account",
    "project_id":"your-project-id",
    "private_key_id":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "private_key":"-----BEGIN PRIVATE KEY-----\nMIIEv...4XIk=\n-----END PRIVATE KEY-----\n",
    "client_email":"foobar@bazqux.iam.gserviceaccount.com",
    "client_id":"12345678901234567890",
    "auth_uri":"https://accounts.google.com/o/oauth2/auth",
    "token_uri":"https://accounts.google.com/o/oauth2/token",
    "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url":"https://www.googleapis.com/robot/v1/metadata/x509/foobar%40bazqux.iam.gserviceaccount.com"
}