使用其他请求通过浏览器身份验证 - Gmail API
go through browser auth with rest requests - Gmail API
我想使用 Gmail 提供的公司电子邮件发送电子邮件。为此,我想将 Gmail API 与 rest 命令一起使用(出于遗留目的,基本上使用 php 程序代码启动)。
我有那个代码:
我去这个 url :
// https://accounts.google.com/o/oauth2/auth?client_id=my_client_id&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/gmail.send&response_type=code
// and obtain a token like that : 4/1AX4XfWgmW0ZdxXpJn8YzkVeDs3oXZUHyJcR7abE2TuqQrcmo4c1W02ALD4I
/*
echo GoogleAuthCurl("GET", '', array(
'client_id' => $GOOGLE_CLIENT_ID,
'redirect_uri'=>'urn:ietf:wg:oauth:2.0:oob',
'scope' => 'https://www.googleapis.com/auth/gmail.send',
'response_type' => 'code'
), array());
然后我可以使用 curl 中的请求来获取我的访问令牌:
curl \
--request POST \
--data "code=[Authentcation code from authorization link]&client_id=[Application Client Id]&client_secret=[Application Client Secret]&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code" \
https://accounts.google.com/o/oauth2/token */
$tokenJson = json_decode( GoogleTokenCurl("POST", '', array(), array(
'code' => '4/1AX4XfWiEWngRngF7qryjtkcOG1otVtisYpjHnej1E54Pujcrchef8REvdt0',
'client_id' => $GOOGLE_CLIENT_ID,
'client_secret' => $GOOGLE_CLIENT_SECRET,
'redirect_uri'=>'urn:ietf:wg:oauth:2.0:oob',
'grant_type' => 'authorization_code'
)
));
print_r($tokenJson);
到目前为止,我已经得到了我授权的食物header。我的问题是第一步(征得用户同意)。我希望我可以在不将 url 放入浏览器的情况下执行此步骤,在获取授权码之前验证两个屏幕以授予访问权限。
我也对使用 curl 驱动的 rest 请求创建 gmail 邮件的建议感兴趣。我发现 postman collection 关于 gmail api 可以执行的所有操作,但是一两个调用示例不会造成伤害;)
谢谢!
在当前状态下,根据您使用的方法,&response_type=code
,您需要两次调用 OAuth 客户端来获取访问令牌。您可以找到一个示例,说明如何仅使用 HTTP/REST
请求 here.
来处理它
无论如何,您可以使用 Google API Client Library for PHP。允许您处理 OAuth 身份验证流程,只需一次交互即可获取令牌。
您可以找到有关其工作原理的完整示例 here,请注意,此示例使用驱动器 API,如果您想在 Gmail API 中使用它,您可以检查 Gmail API PHP 图书馆.
文档:
我想使用 Gmail 提供的公司电子邮件发送电子邮件。为此,我想将 Gmail API 与 rest 命令一起使用(出于遗留目的,基本上使用 php 程序代码启动)。
我有那个代码:
我去这个 url :
// https://accounts.google.com/o/oauth2/auth?client_id=my_client_id&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/gmail.send&response_type=code
// and obtain a token like that : 4/1AX4XfWgmW0ZdxXpJn8YzkVeDs3oXZUHyJcR7abE2TuqQrcmo4c1W02ALD4I
/*
echo GoogleAuthCurl("GET", '', array(
'client_id' => $GOOGLE_CLIENT_ID,
'redirect_uri'=>'urn:ietf:wg:oauth:2.0:oob',
'scope' => 'https://www.googleapis.com/auth/gmail.send',
'response_type' => 'code'
), array());
然后我可以使用 curl 中的请求来获取我的访问令牌:
curl \
--request POST \
--data "code=[Authentcation code from authorization link]&client_id=[Application Client Id]&client_secret=[Application Client Secret]&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code" \
https://accounts.google.com/o/oauth2/token */
$tokenJson = json_decode( GoogleTokenCurl("POST", '', array(), array(
'code' => '4/1AX4XfWiEWngRngF7qryjtkcOG1otVtisYpjHnej1E54Pujcrchef8REvdt0',
'client_id' => $GOOGLE_CLIENT_ID,
'client_secret' => $GOOGLE_CLIENT_SECRET,
'redirect_uri'=>'urn:ietf:wg:oauth:2.0:oob',
'grant_type' => 'authorization_code'
)
));
print_r($tokenJson);
到目前为止,我已经得到了我授权的食物header。我的问题是第一步(征得用户同意)。我希望我可以在不将 url 放入浏览器的情况下执行此步骤,在获取授权码之前验证两个屏幕以授予访问权限。
我也对使用 curl 驱动的 rest 请求创建 gmail 邮件的建议感兴趣。我发现 postman collection 关于 gmail api 可以执行的所有操作,但是一两个调用示例不会造成伤害;)
谢谢!
在当前状态下,根据您使用的方法,&response_type=code
,您需要两次调用 OAuth 客户端来获取访问令牌。您可以找到一个示例,说明如何仅使用 HTTP/REST
请求 here.
无论如何,您可以使用 Google API Client Library for PHP。允许您处理 OAuth 身份验证流程,只需一次交互即可获取令牌。
您可以找到有关其工作原理的完整示例 here,请注意,此示例使用驱动器 API,如果您想在 Gmail API 中使用它,您可以检查 Gmail API PHP 图书馆.