Android新浪微博之登陆授权
2014-07-23 23:35
323 查看
新浪微博的有三种授权方式,我用的是sso。首先在git上面下载新浪的api和开发文档。根据文档上的步骤把key加载进去,把包引上,就可以开始用咯~ 下面是授权登陆的代码。
package com.weibo.main; import java.text.SimpleDateFormat; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.Window; import android.widget.TextView; import android.widget.Toast; 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.demo.AccessTokenKeeper; import com.sina.weibo.sdk.demo.Constants; import com.sina.weibo.sdk.exception.WeiboException; public class WelcomeActivity extends Activity { /** 显示认证后的信息,如 AccessToken */ private TextView mTokenText; /** 微博 Web 授权类,提供登陆等功能 */ private WeiboAuth mWeiboAuth; /** 封装了 "access_token","expires_in","refresh_token",并提供了他们的管理功能 */ private Oauth2AccessToken mAccessToken; /** 注意:SsoHandler 仅当 SDK 支持 SSO 时有效 */ private SsoHandler mSsoHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_welcome); mTokenText = (TextView) findViewById(R.id.token_text_view); mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE); // SSO 授权 mSsoHandler = new SsoHandler(WelcomeActivity.this, mWeiboAuth); mSsoHandler.authorize(new AuthListener()); // 从 SharedPreferences 中读取上次已保存好 AccessToken 等信息, // 第一次启动本应用,AccessToken 不可用 mAccessToken = AccessTokenKeeper.readAccessToken(this); if (mAccessToken.isSessionValid()) { updateTokenView(true); Intent start = new Intent(WelcomeActivity.this, WeiboMainActivity.class); startActivity(start); finish(); } } /** * 当 SSO 授权 Activity 退出时,该函数被调用。 * * @see {@link Activity#onActivityResult} */ @Override protected 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); } } TimerTask task = new TimerTask() { public void run() { } }; /** * 微博认证授权回调类。 1. SSO 授权时,需要在 {@link #onActivityResult} 中调用 * {@link SsoHandler#authorizeCallBack} 后, 该回调才会被执行。 2. 非 SSO * 授权时,当授权结束后,该回调就会被执行。 当授权成功后,请保存该 access_token、expires_in、uid 等信息到 * SharedPreferences 中。 */ class AuthListener implements WeiboAuthListener { @Override public void onComplete(Bundle values) { // 从 Bundle 中解析 Token mAccessToken = Oauth2AccessToken.parseAccessToken(values); if (mAccessToken.isSessionValid()) { // 显示 Token updateTokenView(false); // 保存 Token 到 SharedPreferences AccessTokenKeeper.writeAccessToken(WelcomeActivity.this, mAccessToken); Toast.makeText(WelcomeActivity.this, R.string.weibosdk_demo_toast_auth_success, Toast.LENGTH_SHORT).show(); } else { // 以下几种情况,您会收到 Code: // 1. 当您未在平台上注册的应用程序的包名与签名时; // 2. 当您注册的应用程序包名与签名不正确时; // 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。 String code = values.getString("code"); String message = getString(R.string.weibosdk_demo_toast_auth_failed); if (!TextUtils.isEmpty(code)) { message = message + "\nObtained the code: " + code; } Toast.makeText(WelcomeActivity.this, message, Toast.LENGTH_LONG) .show(); } } @Override public void onCancel() { Toast.makeText(WelcomeActivity.this, R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_LONG).show(); } @Override public void onWeiboException(WeiboException e) { Toast.makeText(WelcomeActivity.this, "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG) .show(); } } /** * 显示当前 Token 信息。 * * @param hasExisted * 配置文件中是否已存在 token 信息并且合法 */ private void updateTokenView(boolean hasExisted) { 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); mTokenText .setText(String.format(format, mAccessToken.getToken(), date)); String message = String.format(format, mAccessToken.getToken(), date); if (hasExisted) { message = getString(R.string.weibosdk_demo_token_has_existed) + "\n" + message; } mTokenText.setText(message); } }
相关文章推荐
- Android第三方登陆之新浪微博Weibo篇(原生登陆授权)
- Android第三方登陆之新浪微博Weibo篇(原生登陆授权)
- android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
- Android 新浪微博XAuth方式授权与发送
- 新浪微博 & QQ登录 登陆授权 V1.0
- android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
- Android 使用新浪微博SSO授权
- android开发我的新浪微博客户端-用户授权页面UI篇(3.1)
- android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
- Android新浪微博登陆和获取个人信息
- Android新浪微博只进行首次授权
- android开发我的新浪微博客户端-用户授权页面UI篇(3.1)
- Android 新浪微博XAuth方式授权与发送
- android开发我的新浪微博客户端-用户授权页面UI篇(3.1)
- android开发我的新浪微博客户端-用户授权页面UI篇(3.1)
- 新浪微博 & QQ登录 登陆授权 V1.0
- Android 新浪微博XAuth方式授权与发送
- 设为首页收藏本站 切换到宽版 Android开发论坛 - 安卓开发论坛 - Android开发 - 安卓论坛 用户名 自动登录 找回密码 密码 注册 人人连接登陆 用新浪微博连接
- android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
- Android平台下Facebook,Google service, 新浪微博接入第三方应用SSO授权教程