package com.partynetwork.iparty.app.common;
import org.json.JSONException;
import org.json.JSONObject;
import com.partynetwork.dataprovider.util.T;
import com.partynetwork.iparty.app.AppContext;
import com.partynetwork.iparty.app.AppException;
import com.partynetwork.iparty.app.util.StringUtils;
import com.partynetwork.iparty.login.Login.LoginAuthListener;
import com.tencent.weibo.sdk.android.api.UserAPI;
import com.tencent.weibo.sdk.android.api.WeiboAPI;
import com.tencent.weibo.sdk.android.component.sso.AuthHelper;
import com.tencent.weibo.sdk.android.component.sso.OnAuthListener;
import com.tencent.weibo.sdk.android.component.sso.WeiboToken;
import com.tencent.weibo.sdk.android.model.AccountModel;
import com.tencent.weibo.sdk.android.model.BaseVO;
import com.tencent.weibo.sdk.android.model.ModelResult;
import com.tencent.weibo.sdk.android.network.HttpCallback;
import android.content.Context;
import android.content.Intent;
/**
* 腾讯微博帮助类
*/
public class QQWeiboHelper {
private static final long APPID = 801448977;
private static final String APP_SECKET = "a12424b8074b2e393b8c25745272b4d9";
private static final String REDIRECTURI = "http://www.loveiparty.com";
private static String requestFormat = "json";
/**
* 是否授权
*
* @return
*/
public static boolean isAuth(Context context) {
// 获取当前已保存过的 Token
WeiboToken mAccessToken = AccessTokenKeeper.readQQAccessToken(context);
if (mAccessToken != null
&& !StringUtils.isEmpty(mAccessToken.accessToken)) {
return true;
}
return false;
}
/**
* 快捷登陆
*
* @param context
* @param listener
*/
public static void loginAuth(final Context context,
final LoginAuthListener listener) {
AuthHelper.register(context, APPID, APP_SECKET, new OnAuthListener() {
// 如果当前设备没有安装腾讯微博客户端,走这里
@Override
public void onWeiBoNotInstalled() {
Intent i = new Intent(context, QQAuthorizePage.class);
i.putExtra("isLogin", true);
context.startActivity(i);
AuthHelper.unregister(context);
}
// 如果当前设备没安装指定版本的微博客户端,走这里
@Override
public void onWeiboVersionMisMatch() {
Intent i = new Intent(context, QQAuthorizePage.class);
i.putExtra("isLogin", true);
context.startActivity(i);
AuthHelper.unregister(context);
}
// 如果授权失败,走这里
@Override
public void onAuthFail(int result, String msg) {
T.showShort(context, "授权失败");
AuthHelper.unregister(context);
}
// 授权成功,走这里
// 授权成功后,所有的授权信息是存放在WeiboToken对象里面
@Override
public void onAuthPassed(String name, WeiboToken token) {
AccessTokenKeeper.writeQQAccessToken(context, token);
AppContext appContext = (AppContext) context
.getApplicationContext();
try {
appContext.bind(token.openID, token.accessToken,
token.expiresIn, 2);
} catch (AppException e) {
e.makeToast(context);
}
QQWeiboHelper.getUserInfo(context, new HttpCallback() {
@Override
public void onResult(Object object) {
ModelResult result = (ModelResult) object;
if (result != null && result.isSuccess()) {
try {
JSONObject treeNode = (JSONObject) result
.getObj();
JSONObject dataNode = (JSONObject) treeNode
.get("data");
String account = dataNode.getString("name");
String nick = dataNode.getString("nick");
String head = dataNode.getString("head");
String uid = dataNode.getString("openid");
WeiboToken mAccessToken = AccessTokenKeeper
.readQQAccessToken(context);
listener.getUserInfo(1,account, uid, nick, head,
mAccessToken.accessToken,
mAccessToken.expiresIn);
} catch (JSONException e) {
e.printStackTrace();
}
} else {
}
}
});
AuthHelper.unregister(context);
}
});
AuthHelper.auth(context, "");
}
/**
* qq授权
*
* @param context
*/
public static void auth(final Context context) {
AuthHelper.register(context, APPID, APP_SECKET, new OnAuthListener() {
// 如果当前设备没有安装腾讯微博客户端,走这里
@Override
public void onWeiBoNotInstalled() {
Intent i = new Intent(context, QQAuthorizePage.class);
context.startActivity(i);
AuthHelper.unregister(context);
}
// 如果当前设备没安装指定版本的微博客户端,走这里
@Override
public void onWeiboVersionMisMatch() {
Intent i = new Intent(context, QQAuthorizePage.class);
context.startActivity(i);
AuthHelper.unregister(context);
}
// 如果授权失败,走这里
@Override
public void onAuthFail(int result, String msg) {
T.showShort(context, "授权失败");
AuthHelper.unregister(context);
}
// 授权成功,走这里
// 授权成功后,所有的授权信息是存放在WeiboToken对象里面
@Override
public void onAuthPassed(String name, WeiboToken token) {
T.showShort(context, "授权成功");
AccessTokenKeeper.writeQQAccessToken(context, token);
AppContext appContext = (AppContext) context
.getApplicationContext();
try {
appContext.bind(token.openID, token.accessToken,
token.expiresIn, 2);
} catch (AppException e) {
e.makeToast(context);
}
AuthHelper.unregister(context);
}
});
AuthHelper.auth(context, "");
}
/**
* 发布一条微博
*
* @param context
*/
public static void shareMessage(Context context, String content,
String picUrl, HttpCallback callback) {
WeiboToken weiboToken = AccessTokenKeeper.readQQAccessToken(context);
AccountModel account = new AccountModel(weiboToken.accessToken);
WeiboAPI weiboAPI = new WeiboAPI(account);
if (StringUtils.isEmpty(content)) {
content = "iparty分享";
}
if (StringUtils.isEmpty(picUrl)) {
weiboAPI.addWeibo(context, content, "json", 0d, 0d, 0, 0, callback,
null, BaseVO.TYPE_JSON);
} else {
weiboAPI.addPicUrl(context, content, requestFormat, 0d, 0d, picUrl,
0, 0, callback, null, BaseVO.TYPE_JSON);
}
}
/**
* 获取用户信息
*
* @param context
* @param callback
*/
public static void getUserInfo(Context context, HttpCallback callback) {
WeiboToken weiboToken = AccessTokenKeeper.readQQAccessToken(context);
AccountModel account = new AccountModel(weiboToken.accessToken);
UserAPI userAPI = new UserAPI(account);
userAPI.getUserInfo(context, "json", callback, null, BaseVO.TYPE_JSON);
}
}