第三方需要接入微博SDK必须在微博开放平台上对应用进行注册,并获取APP_KEY,添加
应用的授权回调页面(Redirect URI)
您需要在微博开放平台上注册应用程序的包名和签名后,才能正确进行授权。
请注意:包名和签名未注册,或者签名注册不正确,都会导致无法授权。
应用程序包名:指AndroidManifest.xml文件中,package标签所代表的内容。
应用程序签名:该签名是通过官方提供的签名工具生成的MD5值。
详情请查看:微博Android平台SDK文档V4.0pdf 中:如何使用签名工具获取您应用的签名?
注:这个pdf链接不知道是我浏览器的原因还是怎么回事,一直是打不开的,但是这个文档在文章末尾提到的官方demo中,是有这个文档的,大家可以将demo下载下来,然后就可以看里面的 Android平台SDK文档V4.0pdf。
1:Android Studio接入 在你工程的主模块下面修改build.gradle文件,添加微博sdk的依赖
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url "https://dl.bintray.com/thelasterstar/maven/" }
}
}
compile 'com.sina.weibo.sdk:core:4.1.3:openDefaultRelease@aar'
注:添加完依赖后需要点击 Sync Project with Gradle Files 按钮进行下载依赖包
2:Manifest文件中添加以下permission应用权限
<uses-permission android:name="android.permission.INTERNET">uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">uses-permission>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS">uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE">uses-permission>
定义Constants接口,并将Constants类中的各种参数替换成自己应用的参数,请仔细阅读代码注释。
public interface Constants {
/** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
public static final String APP_KEY = "2045436852";
/**
* 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
* 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
*/
public static final String REDIRECT_URL = "http://www.sina.com";
/**
* WeiboSDKDemo 应用对应的权限,第三方开发者一般不需要这么多,可直接设置成空即可。
* 详情请查看 Demo 中对应的注释。
*/
public static final String SCOPE =
"email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
}
public class ShareActivity extends AppCompatActivity implements View.OnLongClickListener,WbShareCallback {//实现WbAuthListener接口
public static final String TAG = "Chunna=ShareActivity";
private ImageView ivQRCode;
WbShareHandler shareHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_share);
initView();
initWeiBo();
}
private void initView() {
ivQRCode = (ImageView)findViewById(R.id.iv_share_QRcode);
ivQRCode.setOnLongClickListener(this);
}
private void initWeiBo() {
WbSdk.install(this,new AuthInfo(this, WebConstants.APP_KEY,WebConstants.REDIRECT_URL, WebConstants.SCOPE));//创建微博API接口类对象
shareHandler = new WbShareHandler(this);
shareHandler.registerApp();
}
/**
* 用户点击分享按钮,唤起微博客户端进行分享。
*/
@Override
public boolean onLongClick(View view) {
//第一个参数是判断分享内容中是否有文本,第一个参数是判断分享内容中是否有图片
sendMessageToWb(false,true);
return true;
}
@Override
public void onWbShareSuccess() {
Log.d(TAG,"分享成功");
}
@Override
public void onWbShareCancel() {
Log.d(TAG,"分享取消");
}
@Override
public void onWbShareFail() {
Log.d(TAG,"分享失败");
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
shareHandler.doResultIntent(intent,this);
}
/**
* 第三方应用发送请求消息到微博,唤起微博分享界面。
*/
private void sendMessageToWb(boolean hasText, boolean hasImage) {
sendMultiMessage(hasText, hasImage);
}
/**
* 第三方应用发送请求消息到微博,唤起微博分享界面。
*/
private void sendMultiMessage(boolean hasText, boolean hasImage) {
WeiboMultiMessage weiboMessage = new WeiboMultiMessage();
if (hasText) {
weiboMessage.textObject = getTextObj();
}
if (hasImage) {
weiboMessage.imageObject = getImageObj(this);
}
shareHandler.shareMessage(weiboMessage, false);
}
/**
* 创建文本消息对象。
* @return 文本消息对象。
*/
private TextObject getTextObj() {
TextObject textObject = new TextObject();
textObject.text = "这里是分享的内容";
textObject.title = "xxxx";
textObject.actionUrl = "http://www.baidu.com";
return textObject;
}
/**
* 创建图片消息对象。
* @return 图片消息对象。
*/
private ImageObject getImageObj(Context context) {
ImageObject imageObject = new ImageObject();
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_share_qrcode);
imageObject.setImageObject(bitmap);
return imageObject;
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_share_QRcode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:background="@mipmap/ic_launcher"/>
RelativeLayout>
文章参考:新浪微博开发文档
文章参考:新浪微博github地址中的demo