帮助与文档

> >

一、手动授权(没有用户系统)

下面是新浪微博授权操作的例子:

Platform weibo = ShareSDK.getPlatform(SinaWeibo.NAME);
ShareSDK.setActivity(this);//抖音登录适配安卓9.0
//回调信息,可以在这里获取基本的授权返回的信息,但是注意如果做提示和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

        }
});
//authorize
weibo.authorize();//要功能不要数据,在监听oncomplete中不会返回用户数据

//想要移除授权状态,在想移除的地方执行下面的方法即可
//weibo.removeAccount(true);

调用authorize方法,会弹出一个授权页面,填写账号和密码以后,会执行授权操作。这个方法的操作回调paListener并不实际带回什么数据,只是通过回调告知外部成功或者失败。但是每一个平台都具备一个PlatformDb的成员,这里面存储了此平台的授权信息。可以参考如下章节的平台数据库的操作的说明或查看获取授权用户资料章节,通过方法getToken、getUserId等方法,获取授权用户在此平台上的授权信息。并由此建立“账户系统”。

以上是授权新浪微博的例子,如果想授权其他的第三方平台,只需要通过修改平台的名称。

Platform qq = ShareSDK.getPlatform(QQ.NAME);

平台的名称可以在快速集成文档章节中找到。例如

新浪微博:SinaWeibo

腾讯QQ:QQ

微信:Wechat

二、平台数据库的操作

ShareSDK将每一个平台的授权数据都缓存在SharedPreferences中,并且相互独立。如果您希望获取任何一个平台的授权数据,可以像下面这样子做:

Platform qzone = ShareSDK.getPlatform(QZone.NAME);
String accessToken = qzone.getDb().getToken(); // 获取授权token
String openId = qzone.getDb().getUserId(); // 获取用户在此平台的ID
String nickname = qzone.getDb().getUserName(); // 获取用户昵称
//部分没有封装的字段可以通过键值获取,例如下面微信的unionid字段
Platform wechat = ShareSDK.getPlatform(Wechat.NAME);
String unionid = wechat.getDb().get("unionid");
// 接下来执行您要的操作

不同平台都会缓存accessToken、expiresIn、UserId、nickname等信息,分别表示授权的Token、授权Token的有效时间、用户在此平台上的ID、用户的昵称等信息。可以通过getToken()或者setToken()进行操作。此外,开发者还可以通过直接get()某个字段的办法,获取其数据,如上面通过“nickname”字段获取到用户的昵称。
ShareSDK同时还允许开发者使用“exportData”和“importData”两个方法,批量导出和导入PlatformDb中的数据。开放这两个方法的目的是:部分应用具备多用户系统,如果同一设备上不同时期要登录多个账户,那么他们需要备份上一个用户的资料。ShareSDK并不设置多用户系统,但是用户可以通过登录不同用户的时候,批量导出旧用户的资料,然后再登录新用户,直到新用户登录成功后,再重新导入旧用户登录数据,实现其多用户系统功能。

三、删除授权信息

由于ShareSDK所有的授权数据都存在PlatformDb中,所以“用户是否”授权,和“取消授权(清除授权信息)”的操作依据其实PlatformDb。在ShareSDK中,判断此平台是否授权的方法是isValid,而取消授权的方法是removeAccount,下面的代码演示客户端判断是否已经授权,如果授权就删除授权资料,否则就执行授权:

Platform qzone = ShareSDK.getPlatform(QZone.NAME);
ShareSDK.setActivity(this);//抖音登录适配安卓9.0
If (qzone.isAuthValid()) {
qzone.removeAccount(true);//执行此操作就可以移除掉本地授权状态和授权信息
}
qzone.setPlatformActionListener(paListener);
//authorize与showUser单独调用一个即可
qzone.authorize();//单独授权,OnComplete返回的hashmap是空的