浏览 6997 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-28
在人们的印象中,各种社交网站的客户端都把登陆作为第一步,但对于淘宝客户端,我们没有必要这样做。这是由于,好多懒人们懒得登陆或注册,因此就不用你的客户端了,直接影响将近三分之一的网站流量啊(这是看官方论坛中有人统计的)。因此我们在不得不登陆的时候再设置登陆这步,而不是放在客户端的开始。 2.进行登陆的过程 淘宝的登陆为了安全起见,规定以内嵌wap页的形式网页登陆,因此登陆这步我们就没必要纠结于界面设计了,直接放一个WebView就OK了(url用Mars.jar包中的MtopLogin类的getLoginUrl()方法得到)。在页面中实现登陆、授权后,MtopLogin类可以getTopSession(),这个参数在后续的得打用户、进行买卖中将用到。 3.实现该过程的准备: 下载mars.alpha-v0.6(http://www.archermind.com/mtop) (1)新建android工程,在工程中导入mars.jar包(mars.alpha-v0.6\sdk\marr.jar) (2)AndroidManifest.xml 中增加internet访问权和手机硬件访问权 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> (3)建res\layout\login.xml 将一个webview、一个按钮、一个textview拖到一个LinearLayout中。 login.xml代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <WebView android:id="@+id/wv1" android:layout_width="match_parent" android:layout_height="187dp"> </WebView> <Button android:text="获得用户信息" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <TextView android:text="TextView" android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="match_parent"></TextView> </LinearLayout> (4)主要java代码: 获取web的url方法: mWebView = (WebView) findViewById(R.id.webview); // get WebSetting object,设置支持Javascript的参数 mWebView.getSettings().setJavaScriptEnabled(true); // 页面缩放设置 mWebView.getSettings().setBuiltInZoomControls(true); // 使页面获得焦点 mWebView.requestFocus(); String mtopUrl = "http://api.m.taobao.com/rest/api2.do"; String v = ""; String appKey = "12311413";// 你的应用所申请的appkey和secret String secret = "48d7e406fadaf1b1f7abb32a95a71c33"; ttid = ""; v = "androidClient"; mtopLogin = new MtopLogin(mtopUrl, v, imei, imsi, appKey, secret, ttid); try { try { mWebView.loadUrl(mtopLogin.getLoginUrl()); } catch (ApiException e) { e.printStackTrace(); } } catch (JSONException e) { mWebView.loadUrl("http://www.baidu.com"); } /* response WebView event */ mWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); button的onclick事件: @Override public void onClick(View v) { try { try { mtopLogin.getUserSessionKey(); } catch (ApiException e) { e.printStackTrace(); } mtopLogin.getTopsession(); } catch (JSONException e1) { e1.printStackTrace(); } OpenServiceClient.init("http://gw.api.taobao.com/router/rest", appKey, secret, getApplicationContext(), "", imei, imsi);//必须有这步才能调用UserDomainApi的方法 try { User user = UserDomainApi.getUser("nick", "", mtopLogin.getTopsession());//通过session获得user信息具体见doc中的文档 text.setText(user.getNick() + user.getCreated()); } catch (ApiException e) { text.setText("获取失败!"); } } (5)注意事项,获取imei,imsi的参数在虚拟机与在真机中不同。 在真机测试中用: TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); String imei = telephonyManager.getDeviceId(); String imsi = telephonyManager.getSubscriberId(); 来获取。 虚拟机中这么获取会报错的。 虚拟机中使用: String imei = "89014103211118510720";//瞎编就行~~~~(>_<)~~~~ String imsi = "310260000000000";//瞎编就行O(∩_∩)O (6)测试说明: 运行应用后,在webview中登陆并实现授权,然后点击按钮“获取用户信息”即可得到登陆的用户名,证明登陆成功。 其实在执行 mtopLogin.getUserSessionKey();后已经登陆成功获取到了其他操作所需的session,token等。 *****************************失恋分割线************************* 没能好好珍惜你是我对我们之间最大的遗憾 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-08-30
我觉得贴个图,可读性会大大增加
|
|
返回顶楼 | |
发表时间:2011-08-30
webview不太清楚,放下图
|
|
返回顶楼 | |
发表时间:2011-08-31
其实我觉得oauth授权直接用自带浏览器就ok了嘛~~
|
|
返回顶楼 | |
发表时间:2011-08-31
建 议上图
|
|
返回顶楼 | |
发表时间:2011-09-01
sfshine 写道 其实我觉得oauth授权直接用自带浏览器就ok了嘛~~
请假OAuth自带浏览器授权后返回时,如何关闭浏览器页面 我用新浪微博时,返回后授权页面还是开着,需要自己关闭,但是用WebView就可以随便操作了 最关键的是,如果用户选择用UC等去授权,很多时候是要失败的 |
|
返回顶楼 | |
发表时间:2011-09-03
推荐用webview. 也可以试试友盟出的第三方oauth验证包,很不错。。
|
|
返回顶楼 | |
发表时间:2011-09-05
亲耐的们,我发现一个手机应用开发的好东西,叫中国移动统一开发环境(英文简称UDE),用了下觉得还蛮顺的,开发者们可以去瞅瞅。。。
UDE最新版!!支持Android、J2ME(K-Java)、Symbian的原生态开发和跨平台开发,一次性安装,还可以将开发出来的代码放在配好的模拟器上直接运行。开发者使用一门语言(Java)开发,在一套代码的基础上可以生成适用于多平台的手机应用。平台性能稳定,上手挺快,开发成本算起来似乎也不大,一般从入行到高级开发人都有施展拳脚的空间。整体感觉还不错,大家感兴趣的可以去试试咯,推荐下载: 一、完整安装,适合从未装过UDE的新用户。 安装包: http://devfile.mmarket.com/upload/cmcc_ude/final/CMCC_UDE_1.1.01.2000.exe 白皮书: http://devfile.mmarket.com/upload/cmcc_ude/final/cmcc_ude_1.1_white_paper.pdf 说明:此版本已经包含社区插件(跨平台开发与社区服务),开发者不需要独立安装插件。 二、插件安装,适合已经装好UDE的老用户。 a) 在已经安装好UDE开发环境中,打开菜单“帮助→安装新软件”将弹出安装窗口,单击“添加”按钮,输入在线安装的“名称”和“位置”。 名称:CMCC_UDE 位置: http://devfile.mmarket.com/upload/cmcc_ude/update b)站点添加完毕以后,按“确定”按钮,回到插件安装界面,按照提示信息进行安装。 安装完成后,系统会提示重启UDE。重启UDE后,主菜单上会显示社区服务等新功能。 |
|
返回顶楼 | |
发表时间:2011-10-08
tntjackie 写道 sfshine 写道 其实我觉得oauth授权直接用自带浏览器就ok了嘛~~
请假OAuth自带浏览器授权后返回时,如何关闭浏览器页面 我用新浪微博时,返回后授权页面还是开着,需要自己关闭,但是用WebView就可以随便操作了 最关键的是,如果用户选择用UC等去授权,很多时候是要失败的 请问一下,您在cmwap 接入点,使用WebView 可以显示出网页吗? |
|
返回顶楼 | |