我正在开展一个项目,我需要使用Gmail PHP API发送电子邮件。我尝试配置身份验证,并且代码最初用于一个电子邮件地址。但是,如果我尝试使用不同的电子邮件地址重新配置相同的项目,则gmail不会使用新的电子邮件地址进行授权。到目前为止,我不知道我到底失踪了什么。这是最初有效的代码。
require '../functions/predump.php';
require '../vendor/autoload.php';
require '../database/connection.php';
require '../database/queries.php';
require '../database/sample.php';
$client_id = 'aoppedisano@tecnavi.com';
$service_account_name = 'anthony@teak-truck- 130612.iam.gserviceaccount.com';
$key_file_location = 'anthony.p12';
//var_dump($key_file_location);
$userid_from='aoppedisano@tecnavi.com';
$client = new Google_Client();
//var_dump($client);
$client->setApplicationName("Client_Library_Examples");
这是最初有效的代码。但是现在当我尝试使用其他电子邮件地址进行配置时,我生成了服务帐户密钥和客户端ID。我看到它没有配置。我不完全确定原因是什么。我唯一的目标是通过身份验证使代码工作。完成身份验证后,整个代码都可以正常运行。但是,我不知道如何使它发挥作用。我试过关注谷歌文档,但没有帮助。我试过这个链接并且它有效,但是,每次我想发送电子邮件时,我都会将屏幕重定向到gmail登录。但我不希望这样。我想要身份验证而不将ui重定向到此页面。enter image description here
答案 0 :(得分:1)
基于此Quickstart sample,您可以将凭据存储到磁盘,这样您就不必每次都登录。
// Store the credentials to disk.
if(!file_exists(dirname($credentialsPath))) {
mkdir(dirname($credentialsPath), 0700, true);
}
file_put_contents($credentialsPath, json_encode($accessToken));
printf("Credentials saved to %s\n", $credentialsPath);
Authorizing with stored credentials:
当用户在成功的首次授权流程后访问您的应用程序时,您的应用程序可以使用存储的刷新令牌来授权请求,而无需再次提示用户。
如果您已经对用户进行了身份验证,则您的应用程序可以从其数据库中检索刷新令牌,并将令牌存储在服务器端会话中。如果刷新令牌被撤销或无效,则需要捕获并采取适当的措施。
还发现此thread建议清除您的Cookie。您还可以尝试使用已停用的实验室登录:http://mail.google.com/mail/?labs=0
。您还可以查看可能有帮助的相关blog。