当用户在网站上登录时,从Android应用程序注销用户

时间:2014-03-08 13:10:16

标签: php android web-services

我有一个Android应用和一个向用户提供相同内容的网站。我正在努力完成以下任务:

如果用户在网站上登录,则Android应用应自动将其注销,如果用户从Android应用登录其帐户,则该网站应将其注销。这是为了确保用户可以同时访问Web应用程序或Android应用程序,而不是一起访问。

我正在寻找实现这一目标的最佳实践和解决方案。

以下是我的想法:

当用户从Android或网站登录时,我更新数据库中名为“login_device”的字段,根据具体情况,这将是“web”或“mobile”。

如果“login_device”为“mobile”且用户从网站登录,则会更改为“web”,Android应用程序将注销该用户。

如果“login_device”是“web”并且用户从Android应用程序登录,则此值将更改为“mobile”,并且用户将从Web注销。

另外,我为Android应用程序创建了一个名为“ping”的Web服务。

但是,在这种方法中,Android应用程序需要与服务器保持持续连接,以检查“login_device”的值。

这是ping服务代码:

<?php

    require_once 'transact/info.php';
    require_once 'transact/database.php';
    require_once 'transact/func.php';

    $data = file_get_contents('php://input');
    $json = json_decode($data);

    $id = mysql_real_escape_string($json->{'user_id'});

    $query = 'select login_device from users where id = '.$id;
    $result=mysql_query($query) or die('error getting admin details : '.mysql_error());
    $row = mysql_fetch_array($result);

    $array = array("login_device" => $row['login_device']);
    print( json_encode($array));
?>

所以,我的问题是:

问:在这种方法中,如何与服务器保持持续连接以检查“login_device:

的值 问:有没有更好更标准的方法来完成上述工作?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

  

问:在这种方法中,如何与服务器保持持续连接以检查“login_device:

的值

定义一个标准时间间隔,即使有人登录网站,他们也没有足够的时间来破坏任何规则(根据你的应用程序正在做什么)(例如10秒),并在此网站ping间隔。移动应用程序的体系结构通常基于REST技术。也就是说,没有真正永久的联系。你越接近ping是非常接近的。所以,你只需要定义“对我来说经常是多久”

  问:有没有更好更标准的方法来完成上述工作?

不,因为这不是通常的要求。大多数应用程序/网站现在不允许永久使用多个设备。所以你如何开始这样做似乎是最好的解决方案

答案 1 :(得分:0)

您是否考虑过使用node.js建立一个网站,然后通过将其包装在Phone Gap和XCode中将其转换为移动应用程序,将其分别转换为Droid和iOS应用程序。 Node.js将保持同步连接对您的应用程序开放,这将允许在用户的登录状态发生变化时推送事件。

相关问题