Skip to content

finogeeks/auth_demo_android

Repository files navigation

FinClip 第三方登录 Android DEMO

本项目提供在 Android 环境中通过第三方账户登录的 DEMO 样例

👉 https://www.finclip.com/ 👈


🤔 FinClip 是什么?

有没有想过,开发好的微信小程序能放在自己的 APP 里直接运行,只需要开发一次小程序,就能在不同的应用中打开它,是不是很不可思议?

有没有试过,在自己的 APP 中引入一个 SDK ,应用中不仅可以打开小程序,还能自定义小程序接口,修改小程序样式,是不是觉得更不可思议?

这就是 FinClip ,就是有这么多不可思议!

📦 使用注意

在本 DEMO 文档中,您需要根据实际使用情况,集成 FinClip SDK,自定义小程序接口,请在使用时注意。

本例中的参数在实际开发中由开发者自行制定,本例仅为示范作用。

第一步 自定义授权登录 login 接口

因本示例在授权登录时需要展示授权 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 开发文档,点我查看

第二步 在小程序进程中注册自定义 API

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,从而省掉上述跨进程调用的过程。

第三步 自定义获取用户信息 getUserProfile 接口

public class ProfileApi extends AbsApi {

  // 定义代码省略

    /**
     * 此示例中 ProfileApi 直接注册在了主进程的扩展 api 中
     * 因此该 api 是在主进程中执行,可以直接获取数据
     */
    private void getUserProfile(JSONObject jsonObject, ICallback iCallback) {
        // 获取用户信息过程省略
    }

}

第四步 在主进程中注册 API

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 进行开发与体验时,常见的问题与指引信息

☎️ 联系我们

微信扫描下面二维码,关注官方公众号 「凡泰极客」,获取更多精彩内容。

微信扫描下面二维码,加入官方微信交流群,获取更多精彩内容。

About

FinClip 小程序授权登录演示项目,用于在小程序中获取微信用户身份登录 / Wechat Authentication DEMO for FinClip

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages