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); } }