我正在为我的公司编写一个Android 2.2应用程序。该应用程序只是发送http get / put / post请求来执行某些操作。由于用户名和密码必须包含在每个http请求中,因此没有真正的登录过程。
我可以看到Android中有AccountManager。但由于每个http请求都需要用户名和密码(而不是某些身份验证令牌),它如何适应?显然,我希望它与其他Android应用程序类似,以便用户只需要第一次登录一次,并且在重新启动应用程序时不会再次提示输入用户名/密码。
任何建议表示赞赏。谢谢!
答案 0 :(得分:6)
我已经开发了类似的应用程序,所以这就是我在psuedocode中解决它的方法。
但是因为用户名和密码 (而不是一些身份验证令牌) 每个http请求都需要,怎么可以 它适合吗?
1#:创建第一页,登录页面。让这个View
包含两个EditText
s(用户名和密码)和一个Button
(登录按钮)。
2#:在Button
点击上发出登录请求,看看您是否使用 HTTP标题名称获得了正确的Cookie
这与您登录时获得的值相对应。通过网络工具找到有效信息,例如 WireShark 。有关登录过程的更多信息,请check out my other answer here。
3#:如果用户名和密码产生了正确的Cookie
信息,保存 SharedPreferences
中的用户名和密码,并通过您的提供其值应用程序,将其分配到Application
类read this for more info regarding global variables。如果值不正确且您没有获得有效的Cookie
,请通过消息(Toast
?)向用户显示该值。
4#:当您尝试来获取授权信息时,提出请求,方法是使用Application
类中保存的信息。
5#:下次您正在启动应用程序,请检查onCreate()
,检查SharedPreferences
是否包含用户信息,如果是,请执行以下操作:请参阅步骤6#,否则等待用户开始输入信息。
6#:如果登录页面已确定用户信息,请将SharedPreferences
分配给全局Application
状态,完成登录Activity
并启动授权Activity
代替。这将发生得非常快,因此用户不会注意到显示“登录页面”。
7#(额外步骤):在授权的Activity
中,确保从Application
实例中获取用户信息。当对授权内容执行第一次请求时,验证任务,就像您在步骤#3 按顺序中所做的那样来控制用户是否已更改网站上的密码。如果用户未更改了任何信息,就会开始抓取回复,您可以随意做任何事情。