可以使用从Google获得的auth_令牌向我的服务器验证Google用户(登录android设备的用户)?

可以使用从Google获得的auth_令牌向我的服务器验证Google用户(登录android设备的用户)?,android,Android,我有一个Android应用程序,可以让用户向我的服务器添加内容。每个用户都应该在此服务器上拥有一个帐户 应用程序通过一个简单的API与服务器通信 我想使用用户的gmail地址作为usermame,使用从AccountManager获得的auth_令牌作为密码。 问题是auth_令牌并不总是相同的,因此不能用作普通密码 通常情况下,服务器接收用户的gmail地址和auth_令牌,并应检查令牌是否对接收到的gmail地址有效。问题是这是不可能的:谷歌没有任何方法可以让我检查这一点 你知道我如何让我的

我有一个Android应用程序,可以让用户向我的服务器添加内容。每个用户都应该在此服务器上拥有一个帐户

应用程序通过一个简单的API与服务器通信

我想使用用户的gmail地址作为usermame,使用从AccountManager获得的auth_令牌作为密码。 问题是auth_令牌并不总是相同的,因此不能用作普通密码

通常情况下,服务器接收用户的gmail地址和auth_令牌,并应检查令牌是否对接收到的gmail地址有效。问题是这是不可能的:谷歌没有任何方法可以让我检查这一点

你知道我如何让我的用户使用他们的gmail地址登录我的服务器,但不提示他们输入密码

我想从Stackoverflow获得类似“使用Google登录”的东西,但我不明白如何确保在我的服务器上收到的令牌是正确的,而不是伪造的


谢谢

应该有一种方法可以将auth_令牌发送到google并检索google用户ID之类的信息,因为您可以检索这些信息:

{
  "audience":"8819981768.apps.googleusercontent.com",
  "user_id":"123456789",
  "scope":"https://gdata.youtube.com",
  "expires_in":436
}
通过使用访问令牌从您的android应用程序在:上发布帖子。。。问题甚至指出,当你想从你的php服务器上做这件事时,你必须用SSL发送,因为谷歌需要它。。。这是我的密码:

<?php

if( isset($_POST['authToken'])){        

    header('Content-Type: text/plain');

    $name = 'www.googleapis.com';//nom du site

    $data = "access_token='".$_POST['authToken']."' ";

    $envoi  = "POST /oauth2/v1/tokeninfo HTTP/1.1\r\n";
    $envoi .= "Host: ".$name."\r\n";
    $envoi .= "Connection: Close\r\n";
    $envoi .= "Content-type: application/x-www-form-urlencoded\r\n";
    $envoi .= "Content-Length: ".strlen($data)."\r\n\r\n";
    $envoi .= $data."\r\n";      

    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if($socket < 0){
            die('FATAL ERROR: socket_create() : " '.socket_strerror($socket).' "');
    }

    if (socket_connect($socket,gethostbyname($name),80) < 0){
            die('FATAL ERROR: socket_connect()');
    }


    if(($int = socket_write($socket, $envoi, strlen($envoi))) === false){
            die('FATAL ERROR: socket_write() failed, '.$int.' characters written');
    }

    $reception = '';
    while($buff = socket_read($socket, 2000)){
       $reception.=$buff;
    }
    echo $reception;

    socket_close($socket);  
}
?>

它只需要适应SSL,并且应该能够检索google用户id!之后,您可以将其与数据库中的一个进行比较,并完成日志记录


顺便问一下,你能和我们分享你的代码吗(使用你的方法和联系人的身份验证令牌)?或者寄到fakeclark@live.com谢谢;-)

搜索他们的OAuth 2.0文档和示例代码。找到一个解决方案:从android应用程序中,我使用AccountManager获取联系人的身份验证令牌,将此身份验证令牌与用户电子邮件一起发送到我的服务器,服务器将尝试使用收到的身份验证令牌获取用户的联系人。如果调用成功,我将收到一个带有标记author的xml:如果author==接收到的用户的电子邮件地址,那么令牌是有效的,我可以在我的服务器上验证该用户。希望有一天它能帮助别人。@UngureanuLiviu你最后的评论对我帮助很大。@UngureanuLiviu我喜欢你的想法。我要试试看。