帮助与文档

> >

一、获取用户资料

如果您想获取用户资料,不同平台获取其他用户资料传递的参数是不同的,请阅读分享平台获取用户资料接口所传递的参数,您可以参考下面的代码实现:

Platform weibo = ShareSDK.getPlatform(context, SinaWeibo.NAME);
//回调信息,可以在这里获取基本的授权返回的信息,但是注意如果做提示和UI操作要传到主线程handler里去执行
weibo.setPlatformActionListener(new PlatformActionListener() {

@Override
public void onError(Platform arg0, int arg1, Throwable arg2) {
	// TODO Auto-generated method stub
    arg2.printStackTrace();
		}

@Override
public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
	// TODO Auto-generated method stub
	//输出所有授权信息
	arg0.getDb().exportData();
		}

@Override
public void onCancel(Platform arg0, int arg1) {
		// TODO Auto-generated method stub

		}
});
weibo.showUser(null);//执行登录,登录后在回调里面获取用户资料
//weibo.showUser(“3189087725”);//获取账号为“3189087725”的资料

示例代码获取了新浪微博的用户信息的实例,调用showUser方法获取用户的资料,如果account为null,则表示获取授权账户自己的资料。 其结果将通过操作回调paListener返回给外部代码,在oncomplete中的hashmap返回数据,然后开发者再自己解析数据,可以参考sample中的FollowList类里面的parseList方法解析数据

获取用户资料成功会执行回调方法onComplete方法,注意res里获取的数据是从平台接口获取的用户数据,我们是不做任何处理,直接返回给开发者的。

简单获取res里面的用户信息(此方法获取每个平台的key都有不同,需要打印res自行查看获取)

public void onComplete(Platform platform, int action, HashMap<String, Object> res) {
        //遍历Map
    Iterator ite =res.entrySet().iterator();
    while (ite.hasNext()) {
        Map.Entry entry = (Map.Entry)ite.next();
        Object key = entry.getKey();
        Object value = entry.getValue();
        System.out.println(key+": "+value);
    }
}

获取平台数据库的用户信息(此方法统一各个第三方平台获取数据信息的接口)

public void onComplete(Platform platform, int action, HashMap<String, Object> res) {
//用户资源都保存到res
//通过打印res数据看看有哪些数据是你想要的
if (action == Platform.ACTION_USER_INFOR) {
			PlatformDb platDB = platform.getDb();//获取数平台数据DB
			//通过DB获取各种数据
			platDB.getToken();  
			platDB.getUserGender();
			platDB.getUserIcon();
			platDB.getUserId();
			platDB.getUserName();
		}
}
Platform weibo = ShareSDK.getPlatform(context, SinaWeibo.NAME);
weibo.setPlatformActionListener(paListener);

二、第三方平台登录

获取用户资料的最主要用途是实现第三方平台登录的功能。一般来说,如果您的应用已经拥有自己的登录/注册功能了,但是您还希望提供用户一种利用已有的微博等第三方平台的账号快速登录到您的系统,那么您可以选择简单的“授权-登录”,或者“获取用户资料-注册-登录”。

1、方法一

第一种方法会让您的系统一直依赖第三方平台,其操作方式如下:

1、点击您应用的“登录”按钮
2、调用authorize引导用户授权
4、成功使用getDb().getUserId()来获取此用户在此平台上的id
5、如果id不为空,就视为用户已经登录

 

2、方法二

而第二种方法您的应用需要有自己的账号系统。操作如下:

1、点击您应用的“登录”按钮
2、通过用户指定的平台,使用getDb().getUserId()来得到用户在此平台上的id
3、如果id不为空,则提交给您的登录接口,否则调用showUser请求用户的资料
4、服务器接收到id以后判断用户是否已经注册,若已注册,认为登录成功,否则引导客户端进入注册流程
5、客户端进入注册流程以后,将从showUser得到的资料填写到注册页面,用户完善资料以后,将其id和资料一并提交给您应用的服务器
6、如果注册成功,引导用户进入客户端应用

获取资料前ShareSDK会自行判断平台是否已经授权,若未授权,会自行执行授权操作。
更多第三方平台登录的实现技巧,可以参考ShareSDK BBS中的相关页面。