|
进行登陆的过程
淘宝的登陆为了安全起见,规定以内嵌wap页的形式网页登陆,因此登陆这步我们就没必要纠结于界面设计了,直接放一个WebView就OK了(url用Mars.jar包中的MtopLogin类的getLoginUrl()方法得到)。在页面中实现登陆、授权后,MtopLogin类可以getTopSession(),这个参数在后续的得打用户、进行买卖中将用到。
(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代码:
java代码: <?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"
androidrientation="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方法:
java代码: 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事件:
java代码: @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",
16. 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("获取失败!");
}
} |
|