Android实现新浪微博SSO授权登录分享文字图片等功能(WEIBO

新浪开发平台:

新浪微博分享目前分为两种途径:

1,直接在自己的APP,弹出类似Dialog(sina集成)来完成授权,授权成功后可直接分享内容,全程都是在自己APP里完成分享。老版本的微博SDK中集成了弹出分享Dialog(WebView)的视图,以及插入文字、图片、URL等API,直接调用接口中的update就可以分享,此方法是在自己的APP中弹出类似Dialog的形式来完成的,分享的所有过程都在一个界面。

【APP分享-弹出sina封装好的Dialog-(授权)–分享—Dialog消失】

2,最新版的微博SDK,建议移动开发者使用SSO授权机制,这种机制牵引用户在分享时,跳转到手机中的新浪微博客户端,然后授权验证以及发送微博。【APP携带要分享的数据—–跳转到微博客户端—-(授权或登录)—-分享—–返回APP】

如果使用老版本的SDK,代码量很少,就可以很简单的分享一条微博,但是授权验证时:Failed to receive access token,始终无法获得授权token,初步认为sina不再支持这种方式了。

如果使用新版本的SDK,带来的问题就是用户的手机一定要安装了 新浪微博客户端 否则无法分享。

本文是sina建议的SSO机制,APP间跳转和回调,跟着我的步骤走,让你很快实现分享功能。

成为开发者

打开新浪开发平台,都应该有新浪微博账号吧,登录好后,在网页右上角点击个人信息-编辑开发者信息:

首先你要成为一名开发者,类型的话我选择的是个人,公司性质还需要一系列审核,很麻烦,我只是为了在APP里实现分享功能,并不会延伸到支付等高级API,所以选择了个人开发者,完成后会给邮箱发邮件,一系列的动作,相信你没问题。(至于身份认证,需要上传开发者证件,我认为无所谓,目前只是分享功能)

创建应用

开发平台,点击管理中心,在这个界面我们需要创建一个应用,以供sina识别我们自己的APP。

sina说的很明确了,创建一个应用,得到appkey,就能测试了,至于之后的审核、上线,就看你的需求了,不需要审核,就可以实现分享的功能!

创建应用

创建应用-移动APP应用地址什么之类的可以随意写(如果你只是demo)。

编辑应用

创建好后,记住APP_KEY,这是你身份标识,然后编辑应用:

你的APP是什么包名,这里就填什么,不一致的话,不能通过验证。

Android签名是sina让你使用它的APk,输入包名,生成一个唯一的MD5校验码

寻找Android SDK,下载下来,打开后有一个app_signatures.apk,部署到手机里,运行生成一个DM5签名,复制到网页中来。

Android下载地址就无所谓了,可以随意写。

高级信息

打开高级信息,编辑OAuth2.0 授权设置,因为是移动APP,我们要填写一个授权回调页,否则获取不到access_token,在这里我填写的是,【注意哦,这里填写什么,项目中的REDIRECT_URL的值就是什么,这俩得保持一直,否则验证不通过,就会遇到error:redicect_uri_mismatch 错误】,取消授权页这里可以什么都不输入,目前用不到。

关联账号

打开测试账号,输入自己的微博名称,关联一下,到此为止,已经成功了一半。

开发测试导入jar包

把下载好的weibo_sdk.jar导入到项目中的libs。

配置跳转Action

在AndroidManifest.xml中,在需要接受消息(微博APP分享成功返回到自己APP)的类里声明对应的Action:

com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY如下代码:

<activityandroid:name=".DemoActivity"android:configChanges="keyboardHidden|orientation"android:launchMode="singleTask"android:screenOrientation="portrait"android:theme="@android:style/Theme.Black.NoTitleBar" ><intent-filter><action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY"/><category android:name="android.intent.category.DEFAULT"/></intent-filter></activity>对应的Activity要实现IWeiboHandler.Response接口

初始化protected Weibo mWeibo;public static final String WEIBO_KEY = "你的APP_KEY";public static final String REDIRECT_URL = "";//【和网站自己设置的回调页保持一致】public Oauth2AccessToken mAccessToken;public IWeiboAPI weiboApi;protected Bitmap mSharedPic;protected SsoHandler mSsoHandler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// TODO initmWeibo = Weibo.getInstance(WEIBO_KEY, REDIRECT_URL, null);weiboApi = WeiboSDK.createWeiboAPI(AppMain.this, WEIBO_KEY);weiboApi.responseListener(getIntent(), this);String path = Environment.getExternalStorageDirectory().toString()+ "/test.png";mSharedPic = BitmapFactory.decodeFile(path);}Callback

在onCreate()和onNewIntent里加入weiboApi.responseListener(intent,this);

@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);weiboApi.responseListener(intent, this);}

当从微博发博器界面返回到该 Activity时 , 接 口 函 数 IWeiboHandler.Response.onResponse(…)会被调用,用户可以从该函数内获取成功或失败,以及取消的信息,如下:

/** * 当从微博返回到该Activity时,此接口函数会被调用 */@Overridepublic void onResponse(BaseResponse baseResp) {switch (baseResp.errCode) {case com.sina.weibo.sdk.constant.Constants.ErrorCode.ERR_OK:Toast.makeText(this, "分享成功", Toast.LENGTH_LONG).show();break;case com.sina.weibo.sdk.constant.Constants.ErrorCode.ERR_FAIL:Toast.makeText(this, baseResp.errMsg + "分享失败!", Toast.LENGTH_LONG).show();break;case com.sina.weibo.sdk.constant.Constants.ErrorCode.ERR_CANCEL:Toast.makeText(this, "取消分享", Toast.LENGTH_LONG).show();break;}}在onActivityResult里加入回调函数只有坚韧不拔向着目标奋进,成功后将在不远处等待着你的到来。

Android实现新浪微博SSO授权登录分享文字图片等功能(WEIBO

相关文章:

你感兴趣的文章:

标签云: