Android 使用第三方登录(QQ和新浪微博)
账号申请什么的我就在这里略过了!(相信大家看看文档都能够处理的)本篇博客仅作引导用--主要提供给哪些不知道怎样入手的朋友。(如果需要更加强大的功能大家可以看一下开放平台上的文档,上面都有的)
使用QQ登录需要在QQ互联开放平台上注册一个账号并提交审核:http://connect.qq.com/intro/login
使用新浪微博登录需要到新浪微博开放平台注册账号:http://open.weibo.com/development/mobile
新浪微博登录的处理代码:(需要下载新浪微博的SDK)
import java.io.ByteArrayOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat; import org.json.JSONException;
import org.json.JSONObject; import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.Toast; import com.hd.client.BindActivity;
import com.sina.weibo.sdk.auth.Oauth2AccessToken;
import com.sina.weibo.sdk.auth.WeiboAuthListener;
import com.sina.weibo.sdk.auth.WeiboAuth.AuthInfo;
import com.sina.weibo.sdk.exception.WeiboException;
import com.sina.weibo.sdk.net.RequestListener;
import com.sina.weibo.sdk.widget.LoginButton; /**
* 新浪微博登录工具类
* @author yw-tony
*
*/
public class SinaLoginUtil {
private static final String appkey = "你的appkey";
// http://www.sina.comhttp://www.fortrun.com
private static final String redirectUrl = "http://www.fortrun.com";
private static final String SCOPE = "email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
/** 登陆认证对应的listener */
private AuthListener mLoginListener = new AuthListener();
/** 登出操作对应的listener */
private LogOutRequestListener mLogoutListener = new LogOutRequestListener();
private Context context;
private AuthInfo authInfo = null;
public String token = ",";private SinaLoginUtil(){}
private static SinaLoginUtil instance = new SinaLoginUtil();
public static SinaLoginUtil getInstance(){
return instance;
}
public void initSina(Context context,LoginButton loginButton){
this.context = context;
// 创建授权认证信息
authInfo = new AuthInfo(context, "你的appkey",redirectUrl, SCOPE);
loginButton.setWeiboAuthInfo(authInfo, mLoginListener);
}
/**
* 登入按钮的监听器,接收授权结果。
*/
private class AuthListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
final Oauth2AccessToken accessToken = Oauth2AccessToken.parseAccessToken(values);
if (accessToken != null && accessToken.isSessionValid()) {
/*String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(
new java.util.Date(accessToken.getExpiresTime()));*/
// String format = getString(R.string.weibosdk_demo_token_to_string_format_1);
// mTokenView.setText(String.format(format, accessToken.getToken(), date));
AccessTokenKeeper.writeAccessToken(context, accessToken);
}
} /**
* 登出按钮的监听器,接收登出处理结果。(API 请求结果的监听器)
*/
private class LogOutRequestListener implements RequestListener {
@Override
public void onComplete(String response) {
if (!TextUtils.isEmpty(response)) {
try {
JSONObject obj = new JSONObject(response);
String value = obj.getString("result"); if ("true".equalsIgnoreCase(value)) {
AccessTokenKeeper.clear(context);
// mTokenView.setText(R.string.weibosdk_demo_logout_success);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
} @Override
public void onComplete4binary(ByteArrayOutputStream responseOS) {
// Do nothing
} @Override
public void onIOException(IOException e) {
// mTokenView.setText(R.string.weibosdk_demo_logout_failed);
} @Override
public void onError(WeiboException e) {
// mTokenView.setText(R.string.weibosdk_demo_logout_failed);
}
}
}
QQ登录:
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast; import com.google.gson.JsonObject;
import com.hd.client.BindActivity;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError; /**
* 使用QQ登陆工具类
* @author yw-tony
*
*/
public class QQLoginUtil {
public String token = ",";
public Tencent tencen = null;
private static String APP_ID = "你的Appid";
private Context context;
private QQLoginUtil(){}
private static QQLoginUtil instance = new QQLoginUtil();
public static QQLoginUtil getInstance(){
return instance;
} public void initTencen(Context context){
tencen = Tencent.createInstance(APP_ID, context);
this.context = context;
} public void qqLogin(Activity activity){
if (!tencen.isSessionValid()) {
IUiListener listener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {
/*updateUserInfo();
updateLoginButton();*/
}
};
tencen.login(activity, "all", listener);
} else {
tencen.logout(activity);
// updateUserInfo();
// updateLoginButton();
}
}
private class BaseUiListener implements IUiListener { @Override
public void onComplete(JSONObject response) {
// Util.showResultDialog(MainActivity.this, response.toString(), "登录成功");
Log.e("响应字符串", response.toString());
doComplete(response);
} protected void doComplete(final JSONObject values) { } @Override
public void onError(UiError e) {
Log.e("错误信息", e.errorDetail);
// Util.toastMessage(MainActivity.this, "onError: " + e.errorDetail);
// Util.dismissDialog();
} @Override
public void onCancel() {
Log.e("取消了当前的登录操作", "取消了当前的登录操作");
// Util.toastMessage(context, "onCancel: ");
// Util.dismissDialog();
}
}
}
Android 使用第三方登录(QQ和新浪微博)的更多相关文章
- Android UmengShareSDK第三方登录
Android UmengShareSDK 第三方登录- 今天就不废话了,集成平台第三方登录.市面上集成平台有shareSDK 和 Ument两种,shareSDK的ipa和服务好些,如果自己研究会很 ...
- android实现第三方登录之QQ登录
首先,当然是在腾讯开放平台(http://open.qq.com/)注册成为开发者,然后获取APP ID 1.下载SDK http://wiki.open.qq.com/wiki/mobile/SDK ...
- 第三方登录 QQ登录 人人网登录 新浪微博登录
http://www.pp6.cn/Index.aspx http://www.pp6.cn/Login.aspx 网站有自己的账号系统,这里使用的第三方登录仅仅是获取第三方账号的唯一id,昵称,性别 ...
- 安卓Android第三方登录-QQ登录
要实现QQ第三方登录,其实只需要一个封装类:QQLoginManager 几乎 三行代码 就实现QQ登录功能 这里先给出Github开源项目地址,项目下有详细的使用说明 下面就开始详细说一说怎么实 ...
- Android ShareSDKQQ 第三方登录so easy?
昨天群里有个群友看到我之前做的那个qq第三方登录怎么做的,于是乎思考了一下,还是决定写一篇博客记录下.事实上都不难的,事实上之前我又写到FaceBook的第三方登录不知道看下这Android集成Fac ...
- [置顶]
Android ShareSDKQQ 第三方登录so easy?
昨天群里有个群友看到我之前做的那个qq第三方登录怎么做的,于是乎思考了一下,还是决定写一篇博客记录下,其实都不难的,其实之前我又写到FaceBook的第三方登录不知道看下这Android集成FaceB ...
- Android 微信第三方登录(个人笔记)
今天在写微信登录,花了半天时间搞定.然后写下自己的笔记,希望帮助更多的人...欢迎各位指教. 微信授权登录,官方说的不是很清楚.所以导致有一部分的坑. 微信注册应用平台的应用签名,下载 微信签名生成工 ...
- 第三方登录 ----QQ登录
学习之前,请大家先看一下oAuth协议. 首先呢,我们进入QQ互联的官方网站 http://connect.qq.com登入我们自己的QQ号,没有QQ号的小伙伴可以忽略本篇博文分享!
- android 第三方登录 --- QQ
1,jar包 2,配置AndroidManifest.xml <activity android:name=".login.LoginActivity" android:co ...
随机推荐
- .Net 多线程 异步编程 Await、Async和Task
await和async简介 await和async是在C#5中引入,并且在.NetFramewor4.5以及.NetCore中进行了支持.主要是解决性能瓶颈,并且增强系统的响应能力. msdn关于 ...
- 【代码笔记】iOS-将字符串中特定后的字变成红色
一,效果图. 二,代码. ViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup ...
- Maven学习(三)maven原理概念详述
maven相关概念 maven坐标 Maven世界拥有大量构建,当我们需要引用依赖包是,需要用一个用来唯一标识去确定唯一的一个构建.如果拥有了统一规范,就可以把查找工作交给机器. 类似于空间找点的坐标 ...
- linux centOS7 设置 redis 开机启动
1.为了让redis-server能在系统启动时自动运行,需要将redis服务作为守护进程(daemon)来运行,我们回/usr/local/cluster/7000/目录中找到一个redis.con ...
- 记一次Linux下数据统计
需求: 服务端有应用访问日志,需要统计某一个API,访问top N的通道. 统计思路: 1.筛选/过滤待统计API: 2.分割,获取待统计具体字段: 3.计数: 4.按照计数结果降序排序: 5.截取t ...
- GIT回推本地commit近期版本
一次意外吧,本地add并且commit之后拉了别人错误的代码下来,后来本地又需要进行编写测试,无奈只能回推到自己刚刚commit过的代码,但是git命令除了拉去提交等其他的不是很熟悉,在度娘之后也遇到 ...
- 【SPL标准库专题(10)】SPL Exceptions
嵌套异常 了解SPL异常之前,我们先了解一下嵌套异常.嵌套异常顾名思义就是异常里面再嵌套异常,一个异常抛出,在catch到以后再抛出异常,这时可以通过Exception基类的getPrevious方法 ...
- 【SPL标准库专题(3)】 Classes
我把SPL分为四个部分:Iterator,Classes,Datastructures,Function:而其中classes是就是做一些类的介绍(Iterator与Datastructures相关的 ...
- javascript中注册和移除事件的4种方式
对于html中的一些元素注册事件的方式有多种 第一种: 复制代码代码如下: <script> function test() { alert("OK"); } < ...
- PowerShell下载文件
$webRequest = [System.Net.HttpWebRequest]::Create("http://go.microsoft.com/fwlink/?LinkID=14915 ...