expo-qq
v0.2.0
Published
这是QQ开放平台,Tencent Open API的React Native封装,支持所有QQ开放平台的功能。基于TypeScript和最新的Expo Module Api实现,全类型提示支持,支持Config Plugin配置,省去了繁琐的配置流程。
Downloads
275
Maintainers
Readme
expo-qq
这是QQ开放平台,Tencent Open API的React Native封装,支持所有QQ开放平台的功能。基于TypeScript和最新的Expo Module Api实现,全类型提示支持,支持Config Plugin配置,省去了繁琐的配置流程。全自动挡使用QQ互联的功能。 ~~本框架最卓越的成就之一,就是帮你填了绝大部分的QQ SDK的坑,会让你少走很多弯路😂。~~
安装📦
npx expo install expo-qq配置🔧
在 app.json 中配置你的app id,这将用于自动配置安卓清单文件。同时要配置通用链接和URL Scheme等信息:
请注意,通用链接并不是在这里写了就生效的,你需要在腾讯后台注册,还需要在你的服务器的.well-known目录下添加
apple-app-site-association文件,具体可以搜iOS Deep Link看看相关文档。
{
"expo": {
"scheme": ["tencent+你的腾讯QQ App ID,如tencent12345"],
"ios": {
"associatedDomains": ["请在这里配置你的通用链接"]
},
"plugins": [
[
"expo-qq",
{
"appId": "你的腾讯QQ App ID"
}
]
]
}
}添加了这些配置后,执行npx expo prebuild,它会自动帮你配置安卓和iOS项目。
使用📱
import { useEffect } from "react";
import ExpoQQ from "expo-qq";
export default function App() {
/// 监听登录结果,你也可以使用ExpoQQ.addListener('onLoginFinished', callback)来实现,但请不要忘记移除监听
const onLoginFinished = useEvent(ExpoQQ, "onLoginFinished");
/// 在登录成功后,onLoginFinished会包含id和token等信息,可以查看LoginAccessTokenInfo类型获取详细信息
/// 国内应用需要在用户接受隐私协议后再初始化
useEffect(() => {
const init = async () => {
await ExpoQQ.init("appId", "universal link");
};
init();
}, []);
/// 调用qq登陆
const loginByQQ = async () => {
await ExpoQQ.login(["get_user_info"]);
};
}API
init
init(appId: string, universalLink: string | null): Promise<void>初始化QQ SDK。
- appId: QQ 应用 ID
- universalLink: 应用的 Universal Link
login
login(permissions: LoginPermissions[]): Promise<number>登录QQ。
- permissions: 所需权限,尽量只传入所需要的权限
- 返回值: 接口调用结果。0正常,-1异常。安卓:1使用activity登陆,2使用网页登陆,或者显示下载页面。
loginByQRCode
loginByQRCode(permissions: LoginPermissions[]): Promise<number>二维码登录,该方法会唤起网页端的登录流程。
- permissions: 所需权限,尽量只传入所需要的权限
- 返回值: 接口调用结果。0正常,-1异常。安卓:1使用activity登陆,2使用网页登陆,或者显示下载页面。
getLoginTokenInfo
getLoginTokenInfo(): Promise<LoginAccessTokenInfo>获取登录凭证(Token)信息,此方法需要在登录成功后调用。
- 返回值: 登录凭证(Token)信息
sendGetUserInfoReq
sendGetUserInfoReq(): Promise<boolean>发送获取用户信息请求,此方法需要在登录成功后调用。
- 返回值: 接口调用是否成功,如需用户信息回调,请通过事件监听。
shareImage
shareImage(options: ShareContentOptions): Promise<number>分享图文消息到QQ。主图片大小限制5MB,预览图限制1MB,如果超过,会进行压缩。
- options: 分享图片的选项
- 返回值: 分享结果,0 表示成功,其他值表示失败
常见问题❓
我使用Exou Router,我的QQ跳回App后,跳到了一个404页面?
这是因为QQ会通过一个类似tencent1234567://qzapp/xxx的URL来跳到你的app,而expo router会尝试解析并跳转到/qzapp这个路由,但是很显然这个路由并不存在,所以就会显示404,
解决方案,使用Expo Router的Native Intent方案,新建app/+native-intent.tsx文件,并按照文档,拦截tencent1234567这种URL,重定向到你的登录页面即可。
联系我📞
本框架积极维护,如有任何问题,欢迎提交issue或者PR。 QQ 群:682911244。
线路图🚀
- [ ] 添加日志功能
- [ ] 完善Example
鸣谢👏
感谢pianduan-M同学为对本项目的测试和反馈作出的巨大贡献👏。
