友盟第三方登录与分享到新浪微博
来源:互联网 发布:svn服务器搭建ubuntu 编辑:程序博客网 时间:2024/05/29 07:46
界面都是使用官方提供的UI
<1> 首先申请第三方账号,大部分的平台要进行登录和分享功能,都要在第三方平台上创建应用并提交审核,创建应用后,分享登录操作时显示应用的icon,名称和对应的开放平台设置有关
<2>登录新浪微博开放平台,进行创建应用,同时确保授权回调页与代码中配置一致,新浪精简版需要设置安全域名,完整版则不需要此项配置
安全域名必须是”sns.whalecloud.com”
安全域名的修改需要在二次审核通过才能生效,授权回调页修改即时生效
<3>在官网下载jar包,以及对应的res下的文件导入到项目中
<4>配置清单文件,配置key值,配置application
<5>所有的回调监听增加onStart()方法
<6>
在main目录下创建WBShareActivit1y,继承WBShareCallBackActivity
添加权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
注册activity
<activity android:name=".WBShareActivity" android:configChanges="keyboardHidden|orientation" android:screenOrientation="portrait" > <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//分享编辑页 android:name="com.umeng.socialize.editorpage.ShareActivity" android:theme="@style/Theme.UMDefault" android:excludeFromRecents="true" />
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //初始化UMShareAPI UMShareAPI.get(this); Config.DEBUG=true; AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); } { //配置回调地址需要和微博开放平台的授权回调页一致 PlatformConfig.setSinaWeibo("3711844932","8d3ea8c18ea72215bb90e2a9a92e5606","http://open.weibo.com/apps/3711844932/info/basic"); }}
/*第三方登录时.每次都要进行授权,目前SDK默认设置为在Token有效期内登录不进行二次授权, 如果每次登录都要弹出授权界面,就要自行设置 */ UMShareConfig config=new UMShareConfig(); config.isNeedAuthOnGetUserInfo(true); //当安装的时候进行SSO授权,还有一种网页授权,无论设备上是否按照微博客户端,都只会拉起网页授权 config.setSinaAuthType(UMShareConfig.AUTH_TYPE_SSO); UMShareAPI.get(getActivity()).setShareConfig(config); tvAdmin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //实例化授权回调监听 final UMAuthListener listener = new UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { } //授权成功回调 @Override public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) { String sinaId = map.get("id"); //获取用户的用户名 String name = map.get("name"); //获取用户的头像图片地址 imagurl = map.get("iconurl"); //将名字设置为微博的名字 tvAdmin.setText(name); //将头像设置为微博的头像 Picasso.with(getActivity()).load(imagurl).into(ivAdmin); Toast.makeText(getActivity(), "授权成功", Toast.LENGTH_SHORT).show(); } //授权错误回调 @Override public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) { Toast.makeText(getActivity(), "授权失败", Toast.LENGTH_SHORT).show(); } //取消授权回调 @Override public void onCancel(SHARE_MEDIA share_media, int i) { Toast.makeText(getActivity(), "取消授权", Toast.LENGTH_SHORT).show(); } }; UMShareAPI shareAPI = UMShareAPI.get(getActivity()); //获取用户信息所需要实现的接口 shareAPI.getPlatformInfo(getActivity(), SHARE_MEDIA.SINA, listener); } });
在Fragment对应的activity中,复写onActivityResult方法,不可在Fragment实现,要在Fragment对应的activity中复写,如果不实现onActivityResult方法,会导致登录或回调无法实现
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(MainActivity.this).onActivityResult(requestCode,resultCode,data); } @Override protected void onDestroy() { super.onDestroy(); //防止内存泄漏 UMShareAPI.get(NewsDetailActivity.this).release(); }
<7>
//打开编辑面板 UMShareConfig config=new UMShareConfig(); config.isOpenShareEditActivity(true); UMShareAPI.get(NewsDetailActivity.this).setShareConfig(config); //实例化分享回调监听 umShareListener=new UMShareListener() { //分享开始的回调 @Override public void onStart(SHARE_MEDIA share_media) { } //分享结束的回调 @Override public void onResult(SHARE_MEDIA share_media) { Toast.makeText(NewsDetailActivity.this,"分享成功",Toast.LENGTH_SHORT).show(); } //分享错误的回调 @Override public void onError(SHARE_MEDIA share_media, Throwable throwable) { Toast.makeText(NewsDetailActivity.this,"分享失败",Toast.LENGTH_SHORT).show(); } //取消分享的回调 @Override public void onCancel(SHARE_MEDIA share_media) { Toast.makeText(NewsDetailActivity.this,"取消分享",Toast.LENGTH_SHORT).show(); } }; new ShareAction(NewsDetailActivity.this) //将连接拼接在文字的后面 .withText(title+Cans.shareUrl(id))// .withMedia(web)// .withExtra(thumb)// .setPlatform( SHARE_MEDIA.SINA.toSnsPlatform().mPlatform) //最终在分享面板中显示的平台,顺序为展示的排列顺序 .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN,SHARE_MEDIA.EMAIL,SHARE_MEDIA.FACEBOOK,SHARE_MEDIA.DOUBAN,SHARE_MEDIA.WEIXIN_CIRCLE) .setCallback(umShareListener).open();
在所在的activity中复写onActivityResult()
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode,resultCode,data); } @Override protected void onDestroy() { super.onDestroy(); //防止内存泄漏 UMShareAPI.get(NewsDetailActivity.this).release(); }
0 0
- 友盟第三方登录与分享到新浪微博
- 第三方分享之分享到新浪微博
- 集成友盟第三方登录(qq、微信、微信朋友圈、新浪)、分享
- 新浪微博第三方登录体验
- Android 新浪微博第三方登录
- 新浪微博的第三方登录
- 新浪微博第三方登录
- 第三方登录之新浪微博
- 新浪微博第三方登录有感
- 新浪微博第三方登录
- 新浪微博第三方登录
- 接入新浪微博第三方登录
- 新浪微博第三方登录
- 新浪微博第三方登录demo
- 设置新浪微博第三方登录
- 第三方登录(新浪微博)
- 第三方网站新浪微博登录
- 接入新浪微博第三方登录
- MyBatis批量定义别名
- LeetCode Find All Numbers Disappeared in an Array
- iOS https的双向保护
- priority_queue的使用
- 使用IDEA配置MAVEN(初级入门)
- 友盟第三方登录与分享到新浪微博
- poi设置自适应列宽的三种方法
- itorch 安装
- Qss样式表语法
- 鼠标放上显示图片
- 实习第一天
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)
- shell的一些小技巧
- Java中使用Jedis操作Redis