package com.emop.client;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.webkit.WebView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.emop.client.QQLoginActivity.GetUserInfoTask;
import com.emop.client.io.AppConfig;
import com.emop.client.io.WeiboLoginService;
import com.emop.client.tasks.GetSinaUserInfoTask;
import com.weibo.net.AccessToken;
import com.weibo.net.DialogError;
import com.weibo.net.Weibo;
import com.weibo.net.WeiboDialogListener;
import com.weibo.net.WeiboException;
public class WebLoginActivity extends BaseActivity {
private WebView web = null;
private WeiboLoginService sinaService = null;
private SinaWeiboDialogListener loginListener = new SinaWeiboDialogListener();
private ProgressBar processBar = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);
this.web = (WebView)findViewById(R.id.web);
this.processBar = (ProgressBar)findViewById(R.id.progressbar_loading);
web.setVerticalScrollBarEnabled(false);
web.setHorizontalScrollBarEnabled(false);
web.getSettings().setJavaScriptEnabled(true);
TextView t = (TextView)findViewById(R.id.title);
t.setText("新浪登录");
}
protected void onResume (){
super.onResume();
processBar.setVisibility(View.VISIBLE);
Weibo mWeibo = Weibo.getInstance();
mWeibo.setupConsumerConfig(Constants.SINA_APPID, Constants.SINA_APPKEY);
mWeibo.setRedirectUrl(Constants.SINA_CALLBACK);
sinaService = new WeiboLoginService(this, web, Weibo.getInstance(), loginListener, processBar);
sinaService.startLogin();
/*
new Thread(){
public void run(){
AppConfig cfg = client.config();
Weibo weibo = Weibo.getInstance();
String key = cfg.getString(AppConfig.SINA_APP_KEY);
String secret = cfg.getString(AppConfig.SINA_APP_SECRET);
String callback = cfg.getString(AppConfig.SINA_APP_CALLBACK);
if(key != null && key.length() > 0 && secret != null && secret.length() > 0){
weibo.setupConsumerConfig(key, secret);
weibo.setRedirectUrl(callback);
sinaService.startLogin();
}else {
Message msg = handler.obtainMessage(GetSinaUserInfoTask.LOGIN_MSG, "应用配置信息更新错误。");
}
}
}.start();
*/
}
/**
* 登录完成。
*/
private void doneLogin(){
finish();
}
class SinaWeiboDialogListener implements WeiboDialogListener{
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
AccessToken accessToken = new AccessToken(token, Weibo.getAppSecret());
accessToken.setExpiresIn(expires_in);
Weibo.getInstance().setAccessToken(accessToken);
client.saveSettings(Constants.PREFS_SINA_ACCESS_TOKEN, token);
client.saveSettings(Constants.PREFS_SINA_EXPIRES_IN, expires_in);
Log.d("tag", "done, token:" + token + ", expires_in:" + expires_in);
/**
* 如果用户已经登录,不需要再次绑定用户信息。只是刷新一下围脖授权。
*/
new GetSinaUserInfoTask(token, values.getString("uid"), WebLoginActivity.this, handler).start();
//new GetUserInfoTask(token, values.getString("uid")).start();
}
@Override
public void onWeiboException(WeiboException e) {
// TODO Auto-generated method stub
Log.d("tag", "onWeiboException" );
}
@Override
public void onError(DialogError e) {
Log.d("tag", "onError:" + e.toString());
// TODO Auto-generated method stub
}
@Override
public void onCancel() {
Log.d("tag", "onCancel" );
// TODO Auto-generated method stub
}
}
private Handler handler = new Handler(){
public void handleMessage(final Message msg) {
String message = null;
if(msg.obj != null){
message = msg.obj.toString();
if(message != null){
Toast.makeText(WebLoginActivity.this, message, Toast.LENGTH_LONG).show();
}
}
if(msg.what == GetSinaUserInfoTask.LOGIN_DONE){
finish();
}
}
};
}