package com.clo.android.demo; import java.text.SimpleDateFormat; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.Toast; import com.androidquery.AQuery; import com.clo.android.keep.AccessTokenKeeper; import com.clo.sdk.android.Oauth2AccessToken; import com.clo.sdk.android.Weibo; import com.clo.sdk.android.WeiboAuthListener; import com.clo.sdk.android.WeiboDialogError; import com.clo.sdk.android.WeiboException; import com.clo.sdk.android.util.KenoConfig; import com.clo.sdk.android.util.Utility; /** * * @author liyan (liyan9@staff.sina.com.cn) */ public class MainActivity extends Activity { private Weibo mWeibo; private static final String CONSUMER_KEY = KenoConfig.getValue("client_ID");// 替换为开发者的appkey,例如"1646212860"; private static final String REDIRECT_URL = KenoConfig.getValue("redirect_URI"); //private Button authBtn, apiBtn, ssoBtn, cancelBtn; public static Oauth2AccessToken accessToken; public static final String TAG = "sinasdk"; private AQuery mText,authBtn,cancelBtn,apiBtn; /** * SsoHandler 仅当sdk支持sso时有效, */ //SsoHandler mSsoHandler; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /**如果多组件则需要创建多实例,否则会相互覆盖掉*/ mText = new AQuery(this).id(R.id.show); authBtn = new AQuery(this).id(R.id.auth); cancelBtn = new AQuery(this).id(R.id.apiCancel); apiBtn = new AQuery(this).id(R.id.findUsers); mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL); /**点击按钮跳转*/ apiBtn.clicked(this,"gotoUserListActivity"); /**认证按钮,进行验证*/ authBtn.clicked(this, "authorize"); /**点击取消按钮*/ cancelBtn.clicked(this, "cancle"); MainActivity.accessToken = AccessTokenKeeper.readAccessToken(this); if (MainActivity.accessToken.isSessionValid()) { Weibo.isWifi = Utility.isWifi(this); apiBtn.visible(); authBtn.invisible(); cancelBtn.visible(); String date = new java.text.SimpleDateFormat("yyyy/MM/dd hh:mm:ss") .format(new java.util.Date(MainActivity.accessToken.getExpiresTime())); mText.text("access_token 仍在有效期内,无需再次登录: \naccess_token:" + MainActivity.accessToken.getToken() + "\n有效期:" + date); } else { //mText.setText("使用SSO登录前,请检查手机上是否已经安装新浪微博客户端,目前仅3.0.0及以上微博客户端版本支持SSO;如果未安装,将自动转为Oauth2.0进行认证"); } } public void gotoUserListActivity(View v){ Intent intent = new Intent(MainActivity.this, ListActivity.class); startActivity(intent);//转向用户列表 } public void authorize(View v){ Log.i(TAG, "response :"+v); mWeibo.authorize(MainActivity.this, new AuthDialogListener()); } public void cancle(View v){ AccessTokenKeeper.clear(MainActivity.this); authBtn.visible(); cancelBtn.invisible(); apiBtn.invisible(); mText.text(""); } @Override public boolean onCreateOptionsMenu(Menu menu) { return true; } class AuthDialogListener implements WeiboAuthListener { @Override public void onComplete(Bundle values) { String token = values.getString("access_token"); String expires_in = values.getString("expires_in"); MainActivity.accessToken = new Oauth2AccessToken(token, expires_in); if (MainActivity.accessToken.isSessionValid()) { String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new java.util.Date(MainActivity.accessToken.getExpiresTime())); mText.text("认证成功: \r\n access_token: " + token + "\r\n" + "expires_in: " + expires_in + "\r\n有效期:" + date); apiBtn.visible(); authBtn.invisible(); cancelBtn.visible(); AccessTokenKeeper.keepAccessToken(MainActivity.this,accessToken); Toast.makeText(MainActivity.this, "认证成功", Toast.LENGTH_SHORT).show(); } } @Override public void onError(WeiboDialogError e) { Toast.makeText(getApplicationContext(), "Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onCancel() { Toast.makeText(getApplicationContext(), "Auth cancel", Toast.LENGTH_LONG).show(); } @Override public void onWeiboException(WeiboException e) { Toast.makeText(getApplicationContext(), "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG).show(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); /** * 下面两个注释掉的代码,仅当sdk支持sso时有效, */ //if (mSsoHandler != null) { // mSsoHandler.authorizeCallBack(requestCode, resultCode, data); //} } }