为什么用最新版本的新浪微博网页版登陆app登陆两个不同的账号,一个能在每条微博

我原来是用微博登陆的宝宝树手机版,现在在电脑上用邮箱注册了一个号,用的都是新浪微博怎么不同步呀,弄的现在有两个号_育儿问答_宝宝树
我原来是用微博登陆的宝宝树手机版,现在在电脑上用邮箱注册了一个号,用的都是新浪微博怎么不同步呀,弄的现在有两个号
当时年龄:
来自:网页;
这两个就是不同步的哦,亲是可以还用之前的微薄的哦,这样的话就可以只用之前的那个了你的
最佳回答者:
不会呀。我一个号也能用手机上也能用呀。you have been blocked查看: 30436|回复: 92
使用QQ账号,新浪微博账号登录第三方应用
该用户从未签到主题帖子e币
没有eoe的账号,级别还太低,出门如何吹牛逼?
才可以下载或查看,没有帐号?
本帖最后由 公子徵 于
11:31 编辑
& &最近公司由于项目要求,在应用中集成了QQ和新浪微博登录的功能,以前并没有接触过这方面的东西,前2天研究清楚,并实现了,写点心得和大家分享,同时也作为学习记录保留下来。& & 废话不说,直入正题了。
& & 一。使用QQ账号登录第三方应用
& & 这里的第三方应用指的当然是我们自己开发的应用。
& & 腾讯开发平台是一个比较大的开放平台,它包括了腾讯微博开发平台,微信平台等诸多平台,而我们所需要用到的东西,都在开放平台。之所以在一开始就说明这一点是因为,撸主之前因为没搞清楚他们之间的关系,走了不少弯路,所以希望大家能够注意到。
& &1. 在开发之前,首先要使用QQ号登录平台,然后完善开发者信息成为开发者,之后,要在管理中心,创建你的应用,其中包括完善很多关于你的应用的信息。(关于这部分的详细信息,请查看官方在线文档开发者注册和android应用注册)。
& & 2.当我们成功创建 了应用之后,会获得APP ID,这个ID在开发中是必须的。
& & 3.QQ互联SDK,前往该网页,可以下载官方的sdk资料,其中 包括了jar文件,demo,以及详细的开发说明文档。
& & 4.(警醒)开发的第一步,首先要把所需要的jar文件导入到我们的工程中去,在上一步下载的SDK文档中,我们会发现有一个open_sdk.jar文件,按照说明文档导入进去,但是我们会发现在说明文档中分明提到了2个jar文件,腾讯开发平台SDK在这个链接中下载到相应的文件之后,我们会发现它和之前下载的QQ互联文件几乎一样,区别在于开发说明文档在细节上的区别,以及JAR文件的不同。我们刚才提到的所缺少的一个jar文件,在这就可以找到了。但是需要特别注意的是,有些人一看,好像2个jar文件都在这里,那就直接把这2个导入进去开发吧!恭喜你成功掉入陷阱了!我们仔细对比会发现,在腾讯SDK和QQ互联sdk中的open_sdk.jar,他们的大小是不一样的,这2个文件是有区别的。撸主也是在这里纠结了很久,代码完成后没有提示错误,但是运行老是崩掉,后来发现这个问题之后,一阵无语。
& & 简言之,将QQ互联sdk中的open_sdk.jar以及腾讯sdk中的mta_sdk_XXX.jar导入到工程之后,可以按照开发文档,继续往下进行。
& & 5.关于AndroidManifest的配置,开发文档比较详尽,不赘述。
& & 6.鉴于官方demo的复杂性,以及文档中的不完整和不一致性,我提供一个自己简单封装的类,参考一下:
[mw_shl_code=java,true]/**
* 用于使用QQ互联授权,登录的辅助类
* @author totoro
public class TencentQQHelper {
& && &&&public static final String APP_ID = &&;
& && &&&public static final String SCOPE = &get_simple_userinfo&;
& && &&&public T
& && &&&public C
& && &&&public UserInfo userI
& && &&&public TencentQQHelper(Context context) {
& && && && && & this.context =
& && && && && & tencent = Tencent.createInstance(APP_ID, context.getApplicationContext());
& && &&&/**
& && && &* 登录
& && && &* @since
& && && &*/
& && &&&public void login() {
& && && && && & if (!tencent.isSessionValid()) {
& && && && && && && && &tencent.login((Activity) context, SCOPE, new BaseUIListener() {
& && && && && && && && && && &&&@Override
& && && && && && && && && && &&&protected void doComplete(JSONObject obj) {
& && && && && && && && && && && && && & TencentQQToken token = new TencentQQToken();& && && && && && && && && && && && && &
& && && && && && && && && && && && && & try {
& && && && && && && && && && && && && && && && &token.setOpenid(obj.getString(&openid&));
& && && && && && && && && && && && && && && && &token.setAccess_token(obj.getString(&access_token&));
& && && && && && && && && && && && && && && && &token.setExpires_in(obj.getString(&expires_in&));
& && && && && && && && && && && && && & } catch (JSONException e) {
& && && && && && && && && && && && && && && && &e.printStackTrace();
& && && && && && && && && && && && && & }& && && && && && && && && && && && && &
& && && && && && && && && && && && && &
& && && && && && && && && && && && && & QQTokenKeeper.writeAccessToken(context, token);
& && && && && && && && && && && && && & userInfo = new UserInfo(context, tencent.getQQToken());& && && && && && && && && && &&&
& && && && && && && && && && && && && & getUserInfo();
& && && && && && && && && && &&&}
& && && && && && && && &});
& && && && && & } else {
& && && && && && && && &tencent.logout(context);
& && && && && & }
& && &&&/**
& && && &* 获取用户信息
& && && &* @since
& && && &*/
& && &&&public void getUserInfo() {
& && && && && & userInfo.getUserInfo(new BaseUIListener() {
& && && && && && && && &@Override
& && && && && && && && &protected void doComplete(JSONObject obj) {
& && && && && && && && && && &&&Intent intent = new Intent(context,UserInfoActivity.class);
& && && && && & Bundle extras = new Bundle();
& && && && && & try {
& && && && && && && && && && && && && & extras.putString(&name&, obj.getString(&nickname&));
& && && && && && && && && && &&&} catch (JSONException e) {
& && && && && && && && && && && && && & e.printStackTrace();
& && && && && && && && && && &&&}& &
& && && && && & intent.putExtras(extras);
& && && && && & context.startActivity(intent);
& && && && && && && && &}& && && && && &
& && && && && & });& && && && && &
& && &&&/**
& && && &* 用户授权和获取用户信息的回调
& && && &*
& && && &* @author totoro
& && && &*/
& && &&&public class BaseUIListener implements IUiListener {
& && && && && & @Override
& && && && && & public void onComplete(Object response) {
& && && && && && && && &doComplete((JSONObject) response);& && &&&
& && && && && & }
& && && && && &
& && && && && & protected void doComplete(JSONObject obj) {
& && && && && & }
& && && && && & @Override
& && && && && & public void onError(UiError e) {
& && && && && && && && & Toast.makeText(context,e.errorMessage, Toast.LENGTH_SHORT).show();
& && && && && & }
& && && && && & @Override
& && && && && & public void onCancel() {
& && && && && && && && & Toast.makeText(context,&取消操作&, Toast.LENGTH_SHORT).show();
& && && && && & }
}[/mw_shl_code]
& & 关于其他相关的功能,比如注销什么的,应该相对简单,可以在demo里面找到,我就不说了。
& & 发帖BUG不少啊,一编辑我的链接全都不见了,感觉不会爱了!
& & 我就不贴了,腾讯开发平台,QQ互联开发平台,所有相关东西都在里面,大家自己去找吧。
& & 我也就不上传相关文件了,毕竟下载好贵的,如果实在需要的,可以找我。
& &再贴下上面代码涉及到的类:
[mw_shl_code=java,true]/**
* 存放登录令牌的类
* @author totoro
public class TencentQQToken {
& && &&&private S
& && &&&private String access_
& && &&&private String expires_
& && &&&public TencentQQToken() {}
& && &&&public String getOpenid() {
& && && && && &
& && &&&public void setOpenid(String openid) {
& && && && && & this.openid =
& && &&&public String getAccess_token() {
& && && && && & return access_
& && &&&public void setAccess_token(String access_token) {
& && && && && & this.access_token = access_
& && &&&public String getExpires_in() {
& && && && && & return expires_
& && &&&public void setExpires_in(String expires_in) {
& && && && && & this.expires_in = expires_
[/mw_shl_code]
[mw_shl_code=java,true]/**
* 该类定义了QQ互联授权时所需要的参数
* @author totoro
public class QQTokenKeeper {
& && &&&private static final String PREFERENCES_NAME = &tencent_qq_token&;
& & private static final String KEY_OPENID& && && &&&= &openid&;
& & private static final String KEY_ACCESS_TOKEN&&= &access_token&;
& & private static final String KEY_EXPIRES_IN& & = &expires_in&;
& &&&* 保存 Token 对象到 SharedPreferences。
& &&&* @param context 应用程序上下文环境
& &&&* @param token& &Token 对象
& & public static void writeAccessToken(Context context, TencentQQToken token) {
& && &&&if (null == context || null == token) {
& && && && &
& && &&&SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
& && &&&Editor editor = pref.edit();
& && &&&editor.putString(KEY_OPENID, token.getOpenid());
& && &&&editor.putString(KEY_ACCESS_TOKEN, token.getAccess_token());
& && &&&String expires_in = token.getExpires_in();
& && &&&editor.putLong(KEY_EXPIRES_IN, System.currentTimeMillis() + Long.parseLong(expires_in) * 1000);
& && &&&mit();
& &&&* 从 SharedPreferences 读取 TencentQQToken 信息。
& &&&* @param context 应用程序上下文环境
& &&&* @return 返回 TencentQQToken 对象
& & public static TencentQQToken readAccessToken(Context context) {
& && &&&if (null == context) {
& && && && &
& && &&&TencentQQToken token = new TencentQQToken();
& && &&&SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
& && &&&token.setOpenid(pref.getString(KEY_OPENID, &&));
& && &&&token.setAccess_token(pref.getString(KEY_ACCESS_TOKEN, &&));
& && &&&long expires_in = (pref.getLong(KEY_EXPIRES_IN, -1) - System.currentTimeMillis())/1000;
& && &&&token.setExpires_in(Long.toString(expires_in));
& &&&* 清空 SharedPreferences 中 Token信息。
& &&&* @param context 应用程序上下文环境
& & public static void clear(Context context) {
& && &&&if (null == context) {
& && && && &
& && &&&SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
& && &&&Editor editor = pref.edit();
& && &&&editor.clear();
& && &&&mit();
[/mw_shl_code]
& & 二。使用新浪微博账号登录第三方应用
相比来说,新浪微博毕竟省事一些。
& & 我们同样需要注册,创建应用,获得APP_KEY(和QQ的APP_ID类似)。通过开发我们可以发现,他和QQ互联的开发模式非常相似。
& &1. /wiki/SDK#Android_SDK 我们在这里下载到所需要的文件后,可以找到一份比较详细的开发文档。同时有demo可供参考,不过有不同的是,这里我们不通过导入jar文件的方式来引用,而是要将一个作为library的工程WeiboSDk,导入到eclipse,然后add到自己的工程,具体见文档。
& &2.在登录入口方面,QQ互联是提供了所有接口,我们自己完成从按钮到接口的实现;而新浪微博则是为我们提供了封装好的登录按钮,我们需要在布局文件中添加新浪的登录按钮来实现登录,登录按钮分为数种,具体使用可见文档。显然这个比QQ省事的多。
& &3.貌似没什么可说的,贴上自己的实现供参考:
[mw_shl_code=java,true]/**
* 使用新浪微博账号登录时的SSO辅助类
* @author totoro
public class SinaWeiboSSOHelper {
& && &&&/**
& && && &* 用于使用新浪微博账号登录的APP KEY
& && && &*/
& && &&&public static final String APP_KEY = &&;
& && &&&/**
& && && &* 使用新浪微博账号登录时的授权默认回调页
& && && &*/
& && &&&public static final String REDIRECT_URL = &/oauth2/default.html&;
& && &&&/**
& && && &* 用于新浪微博登录的授权参数
& && && &*/
& && &&&public static final String SCOPE = &email&;
& && &&&public AuthInfo authI
& && &&&public C
& && &&&public AuthListener authL
& && &&&public SinaWeiboSSOHelper(Context context) {
& && && && && & this.context =
& && && && && & // 创建授权认证信息
& && && && && & authInfo = new AuthInfo(context, APP_KEY, REDIRECT_URL, SCOPE);
& && && && && & authListener = new AuthListener();
& && &&&/**
& &&&* 登入按钮的监听器,接收授权结果。
& & @SuppressLint(&SimpleDateFormat&)
& && &&&private class AuthListener implements WeiboAuthListener {
& && &&&@Override
& && &&&public void onComplete(Bundle values) {
& && && && && & Oauth2AccessToken accessToken = Oauth2AccessToken.parseAccessToken(values);
& && && && &if (accessToken != null && accessToken.isSessionValid()) {
& && && && && & SinaAccessTokenKeeper.writeAccessToken(context, accessToken);
& && && && && & UsersAPI usersAPI = new UsersAPI(accessToken);
& && && && && & usersAPI.show(Long.parseLong(accessToken.getUid()), new UserRequstListener());
& && && && &}
& && &&&@Override
& && &&&public void onWeiboException(WeiboException e) {
& && && && &Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
& && &&&@Override
& && &&&public void onCancel() {
& && && && &Toast.makeText(context,&取消授权&, Toast.LENGTH_SHORT).show();
& &&&* 使用UsersAPI获取用户信息时需要的请求接口
& &&&* @author totoro
& & private class UserRequstListener implements RequestListener {
& && && && && & @Override
& && && && && & public void onComplete(String response) {
& && && && && && && && &if (!TextUtils.isEmpty(response)) {
& && && && && & try {
& && && && && && &&&JSONObject obj = new JSONObject(response);
& && && && && && &&&/**
& && && && && && && &* 将获取到的用户信息发送到即将跳转到的个人界面
& && && && && && && &*/
& && && && && && &&&Intent intent = new Intent(context,UserInfoActivity.class);
& && && && && && &&&Bundle extras = new Bundle();
& && && && && && &&&extras.putString(&name&, obj.getString(&screen_name&));
& && && && && && &&&extras.putString(&location&, obj.getString(&location&));
& && && && && && &&&intent.putExtras(extras);
& && && && && && &&&context.startActivity(intent);
& && && && && & } catch (JSONException e) {
& && && && && && &&&e.printStackTrace();
& && && && && & }
& && && && &}& && &&&
& && && && && & }
& && && && && & @Override
& && && && && & public void onComplete4binary(ByteArrayOutputStream responseOS) {
& && && && && && && && &// TODO Auto-generated method stub& && &&&
& && && && && & }
& && && && && & @Override
& && && && && & public void onIOException(IOException e) {
& && && && && && && && &Log.v(&IOException&,e.getMessage());& && &&&
& && && && && & }
& && && && && & @Override
& && && && && & public void onError(WeiboException e) {
& && && && && && && && &Log.v(&Error&,e.getMessage());& && &&&
& && && && && & }& && &&&
[/mw_shl_code]
[mw_shl_code=java,true]/**
* 该类定义了微博授权时所需要的参数。
* @author SINA
public class SinaAccessTokenKeeper {
& & private static final String PREFERENCES_NAME = &sina_weibo_token&;
& & private static final String KEY_UID& && && &&&= &uid&;
& & private static final String KEY_ACCESS_TOKEN&&= &access_token&;
& & private static final String KEY_EXPIRES_IN& & = &expires_in&;
& &&&* 保存 Token 对象到 SharedPreferences。
& &&&* @param context 应用程序上下文环境
& &&&* @param token& &Token 对象
& & public static void writeAccessToken(Context context, Oauth2AccessToken token) {
& && &&&if (null == context || null == token) {
& && && && &
& && &&&SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
& && &&&Editor editor = pref.edit();
& && &&&editor.putString(KEY_UID, token.getUid());
& && &&&editor.putString(KEY_ACCESS_TOKEN, token.getToken());
& && &&&editor.putLong(KEY_EXPIRES_IN, token.getExpiresTime());
& && &&&mit();
& &&&* 从 SharedPreferences 读取 Token 信息。
& &&&* @param context 应用程序上下文环境
& &&&* @return 返回 Token 对象
& & public static Oauth2AccessToken readAccessToken(Context context) {
& && &&&if (null == context) {
& && && && &
& && &&&Oauth2AccessToken token = new Oauth2AccessToken();
& && &&&SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
& && &&&token.setUid(pref.getString(KEY_UID, &&));
& && &&&token.setToken(pref.getString(KEY_ACCESS_TOKEN, &&));
& && &&&token.setExpiresTime(pref.getLong(KEY_EXPIRES_IN, 0));
& &&&* 清空 SharedPreferences 中 Token信息。
& &&&* @param context 应用程序上下文环境
& & public static void clear(Context context) {
& && &&&if (null == context) {
& && && && &
& && &&&SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
& && &&&Editor editor = pref.edit();
& && &&&editor.clear();
& && &&&mit();
[/mw_shl_code]
需要注意的是,以上APP_ID和APP_KEY都需要替换成自己的。
如有疑问或者建议,可以随时留言。
& & 三。关于其他实现方式
其实我们可以使用其他第三方sdk来实现这些功能,比如ShareSDK,他提供了包括QQ,新浪微博,人人网,开心网等等一系列第三方分享和登录等功能,而且有一个明显的好处是,不用分别去学习各自平台的开发方式,而是只需要学习ShareSDK的开发方式之后,就可以实现很多平台的分享,尤其是当我们的应用中需要集成比较多的第三方平台。
& &但是当我们的应用比较少的集成第三方,或者比较少的集成第三方的功能,使用这种方式无疑会增加包的大小,因为我们同时集成了其他很多用不到的功能。这时候如果能选择本文介绍的方式开发的话,可以减少应用的大小。
& &大概就这样了,三克油。
上海酒店***,足不出户高品味享受,我们全天候为您服务!把轻松`舒适`快乐带给您!无需任何押金订金!官网电话/微信1:微信2:shanmo12580,务必同时加,qq:[/co &
非常精彩,支持你,加油!
么么哒!好东西!!
本帖被以下淘专辑推荐:
& |主题: 1, 订阅: 0
该用户从未签到主题帖子e币
楼主,怎么利用微博注册第三方应用呢
额。我还有点不知道怎么给你解释,你应该说的是利用微博账号的信息在第三方应用里注册吧!
楼主,我想请问一下,可以获取到登陆的那个QQ号或者微博账号吗?比如微博登陆的那个邮箱号。&
签到天数: 143 天连续签到: 2 天[LV.7]常住居民III主题帖子e币
楼主,怎么利用微博注册第三方应用呢
就是获取微博自己需要的信息,比如账号名,头像地址,昵称等,然后在自己应用的服务器上生成相关账号的信息
签到天数: 87 天连续签到: 1 天[LV.6]常住居民II主题帖子e币
额。我还有点不知道怎么给你解释,你应该说的是利用微博账号的信息在第三方应用里注册吧! ...
楼主,我想请问一下,可以获取到登陆的那个QQ号或者微博账号吗?比如微博登陆的那个邮箱号。
该用户从未签到主题帖子e币
看不到呀。。最近也需要有做这样的功能需求,楼主可以分享下嘛
别急,我正在努力写&
该用户从未签到主题帖子e币
看不到呀。。最近也需要有做这样的功能需求,楼主可以分享下嘛
别急,我正在努力写
该用户从未签到主题帖子e币
楼主,没有demo吗?
我也没看见demo我也没看见demo我也没看见demo&
根据你的回答就知道你没仔细看&
该用户从未签到主题帖子e币
mark,肯定用得上
该用户从未签到主题帖子e币
楼主,没有demo吗?
根据你的回答就知道你没仔细看
该用户从未签到主题帖子e币
该用户从未签到主题帖子e币
避免了不少问题,谢谢
该用户从未签到主题帖子e币
不错,学习了~~~~~~
该用户从未签到主题帖子e币
先收藏,学习一下。。。
签到天数: 4 天连续签到: 1 天[LV.2]偶尔看看I主题帖子e币
感谢分享。
签到天数: 4 天连续签到: 1 天[LV.2]偶尔看看I主题帖子e币
该用户从未签到主题帖子e币
楼主,怎么利用微博注册第三方应用呢
就是获取微博自己需要的信息,比如账号名,头像地址,昵称等,然后在自己应用的服务器上生成相关账号的信息&
额。我还有点不知道怎么给你解释,你应该说的是利用微博账号的信息在第三方应用里注册吧!&
该用户从未签到主题帖子e币
mark 虽然不是很懂
社区认证会员
社区认证会员
QQ已认证,此人靠谱
推荐阅读热门话题
61882418416379326279279260257251226218210206715
半小时前4&小时前4&小时前5&小时前5&小时前5&小时前6&小时前6&小时前6&小时前6&小时前9&小时前10&小时前11&小时前昨天&23:13昨天&16:38昨天&15:13
Powered by

我要回帖

更多关于 新浪微博网页版登陆 的文章

 

随机推荐