package com.example.cordova.weiboLogin; import java.text.SimpleDateFormat; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.widget.Toast; import com.flipped.match.Filpped; import com.sina.weibo.sdk.api.share.IWeiboShareAPI; 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.WeiboAuth.AuthInfo; import com.sina.weibo.sdk.auth.sso.SsoHandler; import com.sina.weibo.sdk.exception.WeiboException; public class WeiboLogin extends CordovaPlugin{ public static final String SCOPE = "email,direct_messages_read" + "friendships_groups_read,friendships_groups_write,statuses_to_me_read," + "follow_app_official_microblog," + "invitation_write"; public static final String APPKEY ="123456789"; public static final String REDIRECT_URL ="https://api.weibo.com/oauth2/default.html"; private CallbackContext mCallbackContext = null; private SsoHandler mSsoHandler=null; @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) { mCallbackContext=callbackContext; if (action.equals("ssoLogin")) { this.ssoLogin(); } else { return false; } return true; } public void ssoLogin(){ // 创建授权认证信息 AuthInfo authInfo = new AuthInfo(Filpped.mContext,APPKEY,REDIRECT_URL,SCOPE); WeiboAuth weiboAuth = new WeiboAuth(Filpped.mContext, authInfo); mSsoHandler=new SsoHandler(Filpped.mActivity, weiboAuth); //important this.cordova.setActivityResultCallback(this); this.cordova.getActivity().runOnUiThread(new Runnable() { @Override public void run() { mSsoHandler.authorize(new AuthListener()); } }); } /** * 当 SSO 授权 Activity 退出时,该函数被调用。 * * @see {@link Activity#onActivityResult} */ @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // SSO 授权回调 // 重要:发起 SSO 登陆的 Activity 必须重写 onActivityResult if (mSsoHandler != null) { mSsoHandler.authorizeCallBack(requestCode, resultCode, data); } } /** * 登入按钮的监听器,接收授权结果。 */ private class AuthListener implements WeiboAuthListener { @Override public void onComplete(Bundle values) { Oauth2AccessToken accessToken = Oauth2AccessToken.parseAccessToken(values); if (accessToken != null && accessToken.isSessionValid()) { String uid=accessToken.getUid(); String token=accessToken.getToken(); JSONObject res=new JSONObject(); try { res.put("uid", uid); res.put("token", token); mCallbackContext.success(res); Log.d("uid",uid); } catch (JSONException e) { // TODO Auto-generated catch block mCallbackContext.error(0); e.printStackTrace(); } } } @Override public void onWeiboException(WeiboException e) { mCallbackContext.error(0); } @Override public void onCancel() { mCallbackContext.error(0); } } }