谷歌帐户的不同身份验证令牌

Posted

技术标签:

【中文标题】谷歌帐户的不同身份验证令牌【英文标题】:different auth tokens for google account 【发布时间】:2012-03-28 11:00:30 【问题描述】:

我得到了一个使用 cURL 的 php 代码来获取 Gmail 帐户的 Google 身份验证令牌。我将它用于C2DM。每次我运行该脚本时,我都会收到一个不同的身份验证令牌。我认为每个谷歌帐户都有一个身份验证令牌,有时只会刷新。但正如我所说,我每次都得到不同的令牌。我应该如何管理如此频繁更改的令牌?使用令牌的更好方法是什么?

这是我用于为我的 gmail 帐户获取 AUTH TOKEN 的代码。

<?php
$ch_cl = curl_init();

curl_setopt($ch_cl, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
curl_setopt($ch_cl, CURLOPT_FOLLOWLOCATION, true);

$data_cl = array('accountType' => 'GOOGLE',
    'Email' => 'xxxxxx@gmail.com',
    'Passwd' => 'xxxxxxxx',
    'source'=>'xxx-xxx-0.1',
    'service'=>'ac2dm'
);

curl_setopt($ch_cl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch_cl, CURLOPT_POST, true);
curl_setopt($ch_cl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch_cl, CURLOPT_POSTFIELDS, $data_cl);

$cLresponse = curl_exec($ch_cl);
// echo $cLresponse;
curl_close($ch_cl);
//parse the $cLresponse and pick out the clientLogin 'Auth' token
$cLrespArrys = explode("\n", $cLresponse);
$authStr = explode("=", $cLrespArrys[2]);

// echo "return is:<br>" . $authStr[0] . "=" . $authStr[1];

$auth = $authStr[1];

echo "<br><br>" . $auth;
?>

这里的 $auth 包含颁发的 AUTH TOKEN。

【问题讨论】:

【参考方案1】:

对于 C2DM,每次注册 C2DM 服务时都会生成身份验证令牌。在将特定设备注册到 C2DM 服务后获得身份验证令牌后,只要 C2DM 服务器不刷新它,您就可以使用相同的身份验证令牌与注册的设备进行通信。检查C2DM site。您拥有的 PHP 代码可能每次都调用 C2DM 注册服务。希望这会有所帮助。

【讨论】:

我想你误会了。我说的是在向客户端设备发送消息时需要传递给 C2DM 服务器的 AUTH TOKEN。据我所知,AUTH TOKEN 是为我们用于注册 C2DM 服务器的 GMAIL 帐户颁发的。您说的是 D2DM 服务器向每个客户端应用程序发出的注册 ID。我已经更新了我的问题。请看看 :) 感谢您的回复。 @Kishan 输入完整的单词并不难。 我想你误会了。我说的是在向客户端设备发送消息时需要传递给 C2DM 服务器的授权令牌。据我所知,AUTH TOKEN 是为我们用于注册 C2DM 服务器的 GMAIL 帐户颁发的。您说的是 D2DM 服务器向每个客户端应用程序发出的注册 ID。我已经更新了我的问题。请看看 :) 感谢您的回复(很抱歉我无法更新之前的评论)

以上是关于谷歌帐户的不同身份验证令牌的主要内容,如果未能解决你的问题,请参考以下文章

如果身份验证令牌在帐户身份验证器中过期,则使用刷新令牌

Microsoft 帐户 JWT 身份验证令牌如何签名?

如何在两个不同帐户之间设置无密码身份验证

Azure AD 身份验证令牌未通过 Web api 授权

如何使用 android 的帐户管理器获取多个范围的身份验证令牌

仅使用 Facebook 令牌在 iOS 上发送 Firebase 邀请登录 Firebase 身份验证