源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android集成新浪微博第三方登录的方法

  • 时间:2022-06-09 11:25 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android集成新浪微博第三方登录的方法
本文实例讲述了Android集成新浪微博第三方登录的方法。分享给大家供大家参考。具体实现方法如下: 1.下载微博的sdk ,导入微博的jar包两个 android-support-v4.jar和weibosdkcore.jar两个包 2.把新浪微博中的demo_src中SDK中的com,导入到项目中 3.用demo中的constants,主要是参数设置,将里面的参数改成自己的参数。 4.编写代码,主要步骤如下:
[u]复制代码[/u] 代码如下:
// 初始化微博对象 mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE); // sinaAuthorWebView.loadUrl("https://open.weibo.cn/oauth2/authorize?scope=email&redirect_uri=http://www.sina.com&state=flashmemoAndroid&forcelogin=true&display=mobile&client_id=2529326755"); //获取code mWeiboAuth.authorize(new AuthListener(), WeiboAuth.OBTAIN_AUTH_CODE); // 第二步:通过 Code 获取 Token fetchTokenAsync(mCode, WEIBO_DEMO_APP_SECRET);
5.主要的核心代码如下:
[u]复制代码[/u] 代码如下:
/** * 微博认证授权回调类。 */ class AuthListener implements WeiboAuthListener { @Override public void onComplete(Bundle values) { if (null == values) { // 获取code失败 return; } String code = values.getString("code"); if (TextUtils.isEmpty(code)) { // 获取code失败  return; } // 获取code成功 mCode = code; // 获取code成功,第二步:通过 Code 获取 Token fetchTokenAsync(mCode, WEIBO_DEMO_APP_SECRET); } @Override public void onCancel() { Log.e("LoginActivity", "sinaAuth cancel"); //如果取消授权,那么可以调到登录页面等 } @Override public void onWeiboException(WeiboException e) { Log.e("LoginActivity", "sinaAuth exception :" + e.getMessage()); } } /** * 该 Handler 配合 {@link RequestListener} 对应的回调来更新 UI。 */ private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case MSG_FETCH_TOKEN_SUCCESS: // 显示 Token // String date = new // SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format( // new java.util.Date(mAccessToken.getExpiresTime())); // String format = // getString(R.string.weibosdk_demo_token_to_string_format_1); // 获取tocken成功 break; case MSG_FETCH_TOKEN_FAILED: // Toast.makeText(WBAuthCodeActivity.this, // R.string.weibosdk_demo_toast_obtain_token_failed, // Toast.LENGTH_SHORT).show(); // 获取tocken失败 break; default: break; } }; }; /** * 异步获取 Token。 * * @param authCode *            授权 Code,该 Code 是一次性的,只能被获取一次 Token * @param appSecret *            应用程序的 APP_SECRET,请务必妥善保管好自己的 APP_SECRET, *            不要直接暴露在程序中,此处仅作为一个DEMO来演示。 */ public void fetchTokenAsync(String authCode, String appSecret) { /* * LinkedHashMap<String, String> requestParams = new * LinkedHashMap<String, String>(); * requestParams.put(WBConstants.AUTH_PARAMS_CLIENT_ID, * Constants.APP_KEY); * requestParams.put(WBConstants.AUTH_PARAMS_CLIENT_SECRET, * appSecretConstantS.APP_SECRET); * requestParams.put(WBConstants.AUTH_PARAMS_GRANT_TYPE, * "authorization_code"); * requestParams.put(WBConstants.AUTH_PARAMS_CODE, authCode); * requestParams.put(WBConstants.AUTH_PARAMS_REDIRECT_URL, * Constants.REDIRECT_URL); */ WeiboParameters requestParams = new WeiboParameters(); requestParams.add(WBConstants.AUTH_PARAMS_CLIENT_ID, Constants.APP_KEY); requestParams.add(WBConstants.AUTH_PARAMS_CLIENT_SECRET, appSecret); requestParams.add(WBConstants.AUTH_PARAMS_GRANT_TYPE, "authorization_code"); requestParams.add(WBConstants.AUTH_PARAMS_CODE, authCode); requestParams.add(WBConstants.AUTH_PARAMS_REDIRECT_URL, Constants.REDIRECT_URL); /** * 请注意: {@link RequestListener} 对应的回调是运行在后台线程中的, 因此,需要使用 Handler 来配合更新 * UI。 */ AsyncWeiboRunner.request(OAUTH2_ACCESS_TOKEN_URL, requestParams, "POST", new RequestListener() { @Override public void onComplete(String response) { LogUtil.d(TAG, "get token Response: " + response); Oauth2AccessToken token = Oauth2AccessToken .parseAccessToken(response); if (token != null && token.isSessionValid()) { LogUtil.d(TAG, "Success! " + token.toString()); mAccessToken = token; // 获取token成功,可以做出相应的处理 // 通知UI改变 mHandler.obtainMessage(MSG_FETCH_TOKEN_SUCCESS) .sendToTarget(); @Override public void onComplete4binary( ByteArrayOutputStream responseOS) { LogUtil.e(TAG, "onComplete4binary..."); mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED) .sendToTarget(); } @Override public void onIOException(IOException e) { LogUtil.e(TAG, "onIOException: " + e.getMessage()); mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED) .sendToTarget(); } @Override public void onError(WeiboException e) { LogUtil.e(TAG, "WeiboException: " + e.getMessage()); mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED) .sendToTarget(); } }); }
主要是改写complete相应的方法即可。handler主要是通知界面做出改变 UI Handler的参数调用问题的参数
[u]复制代码[/u] 代码如下:
/** 获取 Token 成功或失败的消息 */ private static final int MSG_FETCH_TOKEN_SUCCESS = 1; private static final int MSG_FETCH_TOKEN_FAILED = 2;
希望本文所述对大家的Android程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部