100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Android 使用新浪微博SSO授权

Android 使用新浪微博SSO授权

时间:2020-08-24 03:47:52

相关推荐

Android 使用新浪微博SSO授权

新浪微博SSO授权,很早就做好了,只是一直没有时间整理博客,今天加班,晚上闲暇之时便想到整理一下。由于整个七月份很忙,加班很多。前段时间把腾讯微博的SSO认证整理好了。想在七月份翻篇之前再写点东西。好了,不多说废话了,下面就说说关于新浪微博SSO认证的内容。

新浪微博比较简单,而且很方便使用。由于在腾讯微博中我有讲到SSO认证的过程,这里主要是看看新浪微博demo中的MainActivity,这个类中告诉我们如何进行新浪微博的授权,按照这个范例来做就可以的。下面是这个类的源码

demo下载地址:/detail/hap_gx/5825829

package com.weibo.sdk.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.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import com.weibo.sdk.android.Oauth2AccessToken;import com.weibo.sdk.android.Weibo;import com.weibo.sdk.android.WeiboAuthListener;import com.weibo.sdk.android.WeiboDialogError;import com.weibo.sdk.android.WeiboException;import com.weibo.sdk.android.keep.AccessTokenKeeper;import com.weibo.sdk.android.sso.SsoHandler;import com.weibo.sdk.android.util.Utility;/*** * @author liyan (liyan9@) 这位是新浪SSO认证的开发者,很优秀的开发者*/public class MainActivity extends Activity {private Weibo mWeibo;private static final String CONSUMER_KEY = "966056985";// 替换为开发者的appkey,例如"1646212860";private static final String REDIRECT_URL = "";private Button authBtn, apiBtn, ssoBtn, cancelBtn;private TextView mText;public static Oauth2AccessToken accessToken;public static final String TAG = "sinasdk";/*** SsoHandler 仅当sdk支持sso时有效,*/SsoHandler mSsoHandler;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL);authBtn = (Button) findViewById(R.id.auth);authBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {mWeibo.authorize(MainActivity.this, new AuthDialogListener());}});ssoBtn = (Button) findViewById(R.id.sso);// 触发sso的按钮try {Class sso = Class.forName("com.weibo.sdk.android.sso.SsoHandler");ssoBtn.setVisibility(View.VISIBLE);} catch (ClassNotFoundException e) {Log.i(TAG, "com.weibo.sdk.android.sso.SsoHandler not found");}ssoBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {/*** 下面两个注释掉的代码,仅当sdk支持sso时有效,*/mSsoHandler = new SsoHandler(MainActivity.this, mWeibo);mSsoHandler.authorize(new AuthDialogListener());}});cancelBtn = (Button) findViewById(R.id.apiCancel);cancelBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {AccessTokenKeeper.clear(MainActivity.this);authBtn.setVisibility(View.VISIBLE);ssoBtn.setVisibility(View.VISIBLE);cancelBtn.setVisibility(View.INVISIBLE);mText.setText("");}});mText = (TextView) findViewById(R.id.show);MainActivity.accessToken = AccessTokenKeeper.readAccessToken(this);if (MainActivity.accessToken.isSessionValid()) {Weibo.isWifi = Utility.isWifi(this);try {Class sso = Class.forName("com.weibo.sdk.android.api.WeiboAPI");// 如果支持weiboapi的话,显示api功能演示入口按钮apiBtn.setVisibility(View.VISIBLE);} catch (ClassNotFoundException e) {// e.printStackTrace();Log.i(TAG, "com.weibo.sdk.android.api.WeiboAPI not found");}authBtn.setVisibility(View.INVISIBLE);ssoBtn.setVisibility(View.INVISIBLE);cancelBtn.setVisibility(View.VISIBLE);String date = new java.text.SimpleDateFormat("yyyy/MM/dd hh:mm:ss").format(new java.util.Date(MainActivity.accessToken.getExpiresTime()));mText.setText("access_token 仍在有效期内,无需再次登录: \naccess_token:"+ MainActivity.accessToken.getToken() + "\n有效期:" + date);} else {mText.setText("使用SSO登录前,请检查手机上是否已经安装新浪微博客户端,目前仅3.0.0及以上微博客户端版本支持SSO;如果未安装,将自动转为Oauth2.0进行认证");}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}class AuthDialogListener implements WeiboAuthListener {@Overridepublic 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.setText("认证成功: \r\n access_token: " + token + "\r\n"+ "expires_in: " + expires_in + "\r\n有效期:" + date);try {Class sso = Class.forName("com.weibo.sdk.android.api.WeiboAPI");// 如果支持weiboapi的话,显示api功能演示入口按钮apiBtn.setVisibility(View.VISIBLE);} catch (ClassNotFoundException e) {// e.printStackTrace();Log.i(TAG, "com.weibo.sdk.android.api.WeiboAPI not found");}cancelBtn.setVisibility(View.VISIBLE);AccessTokenKeeper.keepAccessToken(MainActivity.this,accessToken);Toast.makeText(MainActivity.this, "认证成功", Toast.LENGTH_SHORT).show();}}@Overridepublic void onError(WeiboDialogError e) {Toast.makeText(getApplicationContext(),"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();}@Overridepublic void onCancel() {Toast.makeText(getApplicationContext(), "Auth cancel",Toast.LENGTH_LONG).show();}@Overridepublic void onWeiboException(WeiboException e) {Toast.makeText(getApplicationContext(),"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG).show();}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);/*** 下面两个注释掉的代码,仅当sdk支持sso时有效,*/if (mSsoHandler != null) {mSsoHandler.authorizeCallBack(requestCode, resultCode, data);}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。