package cn.bidaround.ytcore.sina;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import cn.bidaround.point.YtConstants;
import cn.bidaround.ytcore.data.YtPlatform;
import cn.bidaround.ytcore.login.AuthListener;
import cn.bidaround.ytcore.login.BaseAuth;
import cn.bidaround.ytcore.util.AppHelper;
import com.sina.weibo.sdk.auth.Oauth2AccessToken;
import com.sina.weibo.sdk.auth.WeiboAuth;
import com.sina.weibo.sdk.auth.WeiboAuthListener;
import com.sina.weibo.sdk.auth.sso.SsoHandler;
import com.sina.weibo.sdk.exception.WeiboException;
public class SinaWeiboAuth extends BaseAuth {
/** 新浪accessToken */
private Oauth2AccessToken oauth2AccessToken;
/** 新浪微博授权类 */
private WeiboAuth mWeiboAuth;
/** 新浪微博sso授权类 */
private SsoHandler mSsoHandler;
private String sinaWbAccessToken;
public SinaWeiboAuth(Activity activity, AuthListener listener) {
super(activity, listener);
platform = YtPlatform.PLATFORM_SINAWEIBO;
init();
}
private void init() {
mWeiboAuth = new WeiboAuth(context, platform.getAppId(), platform.getAppRedirectUrl(), YtConstants.SINA_WEIBO_SCOPE);
if (AppHelper.isSinaWeiboExisted(context)) {
mSsoHandler = new SsoHandler((Activity) context, mWeiboAuth);
mSsoHandler.authorize(new SinaAuthListener());
} else {
mWeiboAuth.anthorize(new SinaAuthListener());
}
}
/**
* 新浪微博授权监听
*/
class SinaAuthListener implements WeiboAuthListener {
@Override
public void onCancel() {
sendCancel();
}
@Override
public void onComplete(Bundle bundle) {
oauth2AccessToken = Oauth2AccessToken.parseAccessToken(bundle);
if (oauth2AccessToken.isSessionValid()) {
SinaAccessTokenKeeper.writeAccessToken(context, oauth2AccessToken);
}
/** 获取新浪微博用户信息 */
new Thread() {
public void run() {
HttpClient client = new DefaultHttpClient();
sinaWbAccessToken = oauth2AccessToken.getToken();
String url = "https://api.weibo.com/2/users/show.json";
url += "?" + "access_token=" + oauth2AccessToken.getToken();
url += "&" + "uid=" + oauth2AccessToken.getUid();
HttpGet get = new HttpGet(url);
try {
HttpResponse resp = client.execute(get);
String str = EntityUtils.toString(resp.getEntity());
/** 解析获取的用户信息并赋值给保存用户信息的字段 */
JSONObject sinaJson = new JSONObject(str);
userInfo.setSinaAccessToken(sinaWbAccessToken);
userInfo.setSinaUid(sinaJson.getString("id"));
userInfo.setSinaScreenname(sinaJson.getString("screen_name"));
userInfo.setSinaProfileImageUrl(sinaJson.getString("profile_image_url"));
userInfo.setSinaUserInfoResponse(str);
userInfo.setSinaGender(sinaJson.getString("gender"));
userInfo.setSinaName(sinaJson.getString("name"));
sendSuccess();
} catch (Exception e) {
sendFail();
}
};
}.start();
}
@Override
public void onWeiboException(WeiboException arg0) {
sendFail();
}
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
}