FinClip 第三方登录 Android DEMO
本项目提供在 Android 环境中通过第三方账户登录的 DEMO 样例
有没有想过,开发好的微信小程序能放在自己的 APP 里直接运行,只需要开发一次小程序,就能在不同的应用中打开它,是不是很不可思议?
有没有试过,在自己的 APP 中引入一个 SDK ,应用中不仅可以打开小程序,还能自定义小程序接口,修改小程序样式,是不是觉得更不可思议?
这就是 FinClip ,就是有这么多不可思议!
在本 DEMO 文档中,您需要根据实际使用情况,集成 FinClip SDK,自定义小程序接口,请在使用时注意。
本例中的参数在实际开发中由开发者自行制定,本例仅为示范作用。
因本示例在授权登录时需要展示授权 Dialog,即需要获取 Activity 实例,因此我们需要将该 API 注册在小程序进程,可以方便的获取到展示小程序的 Activity 实例。
public class LoginApi extends AbsApi {
// 定义代码省略
private void showAuthDialog(ICallback iCallback) {
new AlertDialog.Builder(activity)
.setTitle("授权登录")
.setMessage("是否授权该小程序获取用户信息?")
.setCancelable(false)
.setPositiveButton("确定", (dialog, which) -> authLoginOnMainProcess(iCallback))
.setNegativeButton("取消", (dialog, which) -> iCallback.onFail())
.show();
}
/**
* 由于用户信息一般只会存储在主进程中,在小程序进程中直接调用取不到数据
* 因此要使用 callInMainProcess 方法跨进程调用,在主进程中获取到信息后,再回传给小程序进程
*/
private void authLoginOnMainProcess(ICallback iCallback) {
// 跨进程调用代码省略
}
}
跨进程调用 API 的相关说明可以查看 FinClip 开发文档,点我查看
if (FinAppClient.INSTANCE.isFinAppProcess(this)) {
// 小程序进程
initFinClipOnAppletProcess();
} else {
// 主进程初始化代码省略
}
/**
* 将api注册到小程序进程中
*/
private void initFinClipOnAppletProcess() {
FinAppProcessClient.INSTANCE.setCallback(new FinAppProcessClient.Callback() {
@Override
public List<IApi> getRegisterExtensionApis(@NotNull Activity activity) {
List<IApi> extensionApis = new ArrayList<>();
extensionApis.add(new LoginApi(activity));
return extensionApis;
}
@Override
public List<IApi> getRegisterExtensionWebApis(@NotNull Activity activity) {
return null;
}
});
}
至此,小程序通过自定义 API 从 APP 获取用户 token 的整个流程就已经完成了。
请注意
如果产品需求不需要展示用户授权提示 Dialog,建议在主进程注册自定义 Api,从而省掉上述跨进程调用的过程。
public class ProfileApi extends AbsApi {
// 定义代码省略
/**
* 此示例中 ProfileApi 直接注册在了主进程的扩展 api 中
* 因此该 api 是在主进程中执行,可以直接获取数据
*/
private void getUserProfile(JSONObject jsonObject, ICallback iCallback) {
// 获取用户信息过程省略
}
}
FinCallback<Object> initCallback = new FinCallback<Object>() {
@Override
public void onSuccess(Object result) {
// 注册扩展Api,此处注册的Api将会在主进程中执行
FinAppClient.INSTANCE
.getExtensionApiManager()
.registerApi(new ProfileApi());
}
@Override
public void onError(int code, String error) {
}
@Override
public void onProgress(int status, String error) {
}
};
FinAppClient.INSTANCE.init(this, finAppConfig, initCallback);
至此,小程序通过自定义 APP 从 APP 获取用户信息的整个流程就已经完成了。您可以 点击这里 查看 iOS 端与第三方登录的相关内容。
以下内容是您在 FinClip 进行开发与体验时,常见的问题与指引信息