SDK方法(微博)
前置检查
确保已在微博开放平台创建应用,且审核通过,签名可调用Weibo.getSign()方法查看。
@umeng/share从1.1.5版本支持微博,确保已按照快速开始文档的各步骤安装集成成功。
功能说明
一、判断微博是否安装
需要先在module.json5增加如下
sinaweibo固定配置,

调用微博方法
import { Weibo } from "@umeng/share";
// 须先在应用的module.json5文件中先配置 querySchemes: ["sinaweibo"]
Weibo.isInstalled((data: Record<string, string>) => {
// obj.isInstalled为true表示已安装
console.warn(`微博是否安装: ${JSON.stringify(data)}`);
});二、分享面板
分享面板组件可在UI页面中按需使用,控制是否展示。
ShareBoard分享面板组件。
visible可选,若配置则分享或取消会自动关闭面板,若配置则根据开发者限制面板的显示状态,不会自动关闭。
confirm必选,点击面板的确认分享回调。“weibo”表示分享到微博平台。
cancel必选,分享面板点击取消的回调。
import { ShareBoard, Weibo, weiboConfig } from "@umeng/share";
ShareBoard({
visible: this.visible, // 可选,若不传则分享或取消会自动关闭面板,若传则根据开发者限制面板的显示状态,不会自动关闭。
confirm: (pl: string) => {
if (pl === 'weibo') { // 分享的应用平台,weibo表示分享到微博
// 如下以分享文本到微博为例
const config: weiboConfig.TextObject = {
"text": "友盟分享SDK支持sina微博的登录和分享功能了~",
};
Weibo.shareText(config, (obj: object) => {
console.warn(`文本回调: ${JSON.stringify(obj)}`);
});
};
},
cancel: () => {
this.visible = false;
console.log('取消分享了');
},
});
三、分享文本
分享纯文本到微博,文本限制5000个字符,不可为空。
import { Weibo, weiboConfig } from "@umeng/share";
const config: weiboConfig.TextObject = {
text: '分享文本到微博~'
};
Weibo.shareText(config, (obj: Record<string, string>) => {
console.warn(`分享文本的返回: ${JSON.stringify(obj)}`);
});四、分享图片
分享图片或图文到微博。
注意:图片仅支持uri格式,且每次分享对多限制18张图片。
text可选,文本限制5000个字符以内。uris必选,图片uri格式的数组集合。支持png/jpg格式,大小不限。
import { Weibo, weiboConfig } from "@umeng/share";
const uris: string[] = []; // ["file://com.umeng.hm.share/data/storage/el2/base/haps/entry/files/original-1766137214639.jpg"]
// 或者以从相册选取照片为例,参见文档下方getPictureUriFromAlbum方法调试。
// const uris: string[] = await this.getPictureUriFromAlbum('image');
const config: weiboConfig.ImageObject = {
text: '分享图片的文本说明~',
uris: uris,
};
Weibo.shareMultiImage(config, (obj: Record<string, string>) => {
console.warn(`分享图片的返回: ${JSON.stringify(obj)}`);
});五、分享视频
分享视频到微博,可设置文本、视频地址、封面图,仅支持uri格式。
text可选,文本限制5000个字符以内。videoUri必选,视频的uri格式字符串,大小不限。(建议分享视频不超过2G)coverUri可选,视频的封面图地址,uri格式字符串,大小不限。
import { Weibo, weiboConfig } from "@umeng/share";
const uri: string[] = []; // await this.getPictureUriFromAlbum('video');
const config: weiboConfig.VideoObject = {
text: '分享视频的描述~',
videoUri: uri[0],
// coverUri: "file://com.umeng.hm.share/data/storage/el2/base/haps/entry/files/original-1765264648540.jpg",
};
Weibo.shareVideo(config, (obj: Record<string, string>) => {
console.warn(`分享视频的返回: ${JSON.stringify(obj)}`);
});
六、微博登录
微博登录提供SSO授权、SSO授权(客户端)、SSO授权(WEB)三种登录方式。
微博授权登录让用户使用微博身份登录第三方应用或网站,在微博登录授权后,第三方可以获取到用户的接口调用凭证(access_token、uid),通过 access_token和uid 发起get请求调用(https://api.weibo.com/2/users/show.json?uid=7618106328&appkey=3313904948&access_token=2.00i9nY_IoDoQcD813033983agmGl5B)接口,即可获得用户的微博账号信息。
import { Weibo } from "@umeng/share";
// SSO授权登录
Weibo.authorize((data: Record<string, string>) => {
console.warn(`SSO授权返回: ${JSON.stringify(data)}`);
});
// SSO授权登录(客户端)
Weibo.authorizeClient((data: Record<string, string>) => {
console.warn(`SSO授权(客户端)返回: ${JSON.stringify(data)}`);
});
// SSO授权登录(WEB)
Weibo.authorizeWeb((data: Record<string, string>) => {
console.warn(`SSO授权(WEB)返回: ${JSON.stringify(data)}`);
});
七、其他参考方法
从手机相册选取照片,返回uris的示例方法,从开发调试时参考。
import common from '@ohos.app.ability.common';
import { fileIo as fs, fileUri } from '@kit.CoreFileKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
// 选取相册照片示例,返回选中图片uri的数组格式,即uris。
async getPictureUriFromAlbum(type: 'video'|'image'): Promise<string[]> {
let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
if (type === 'video') {
PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.VIDEO_TYPE;
PhotoSelectOptions.maxSelectNumber = 1;
}
if (type === 'image') {
PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
PhotoSelectOptions.maxSelectNumber = 18;
}
let photoPicker = new photoAccessHelper.PhotoViewPicker();
let photoSelectResult: photoAccessHelper.PhotoSelectResult = await photoPicker.select(PhotoSelectOptions);
let selectPhoto = photoSelectResult.photoUris;
console.warn(`选中的图片: ${JSON.stringify(selectPhoto)}`);
// 将选中的图片转uri路径
const allPath: string[] = selectPhoto.reduce((m: string[], itemPath) => {
let albumPath = itemPath;
let context = getContext(this) as common.UIAbilityContext;
let filePath = `${context.filesDir}/original-${Date.now()}.${type === 'video' ? 'mp4' : 'jpg'}`;
let file: fs.File | undefined;
file = fs.openSync(albumPath, fs.OpenMode.READ_ONLY);
fs.copyFileSync(file.fd, filePath);
fs.closeSync(file);
let uri: string = fileUri.getUriFromPath(filePath); // uri路径
m.push(uri);
return m;
}, []);
console.log(`选中的图片uri地址: ${JSON.stringify(allPath)}`);
return allPath;
}
生成签名,用于微博开放平台创建应用时使用。
import { Weibo } from "@umeng/share";
// 生成签名
Weibo.getSign().then(sign => {
console.warn('get sign:' + sign);
});