android - 调用 neuraApiClient.authenticate(...) 时未打开 Nuera 身份验证屏幕

标签 android neura

我正在使用 Neura sdk 来检测我的用户的特殊事件(到达/离开家) 我正在尝试启动他们的身份验证,如下所述(fetchPermissions() 和 initNeuraConnection() 与文档中的相同,mAuthenticationRequest 在 fetchPermissions() 上启动)

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    getMainActivity().initNeuraConnection();
    fetchPermissions();
    getMainActivity().getClient().authenticate(NEURA_AUTHENTICATION_REQUEST_CODE, mAuthenticateRequest);
}

我的问题是,一旦我调用 authenticate - 没有任何反应并且 neura 登录屏幕未打开

最佳答案

您可以检查的内容很少:

你申报了吗initNueraConnection()fetchPermissions()Neura dev site 中所述?

如果是这样,我怀疑您正在向 authenticate(...) 发送一个可为 null 的 mAuthenticateRequest 实例。 由于 fetchPermissions() 是异步的(它是一个网络调用),您在从 fetchPermissions() 获取结果之前调用 authenticate(...),因此,mAuthenticateRequest 为空,因为它尚未启动。 只有在收到有关 fetchPermissions() 的数据后,才应调用 authenticate(...)。

例如,您可以这样做:

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    getMainActivity().initNeuraConnection();
    fetchPermissions();
}
private void fetchPermissions() {
    loadProgress(true);
    getMainActivity().getClient().getAppPermissions(new GetPermissionsRequestCallbacks() {
        @Override
        public void onSuccess(final List<Permission> permissions) throws RemoteException {
            if (getActivity() == null)
                return;
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    loadProgress(false);
                    mPermissions = new ArrayList<>(permissions);
                    mAuthenticateRequest = new AuthenticationRequest();
                    mAuthenticateRequest.setAppId(getMainActivity().getClient().getAppUid());
                    mAuthenticateRequest.setAppSecret(getMainActivity().getClient().getAppSecret());
                    mAuthenticateRequest.setPermissions(mPermissions);

                    getMainActivity().getClient().authenticate(NEURA_AUTHENTICATION_REQUEST_CODE, mAuthenticateRequest);
                }
            });
        }

        @Override
        public void onFailure(Bundle resultData, int errorCode) throws RemoteException {
            loadProgress(false);
            mRequestPermissions.setEnabled(true);
        }

        @Override
        public IBinder asBinder() {
            return null;
        }
    });
}

仅供引用,您可以检查您的 logcat 是否存在此错误:authenticationRequest 可以为 null,无法创建身份验证请求。

关于android - 调用 neuraApiClient.authenticate(...) 时未打开 Nuera 身份验证屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37386689/

相关文章:

android - android 中的 ListView 和操作栏透明

android - 完成 Neura 身份验证后未收到 onActivityResult

android - Neura 如何知道通知用户的最佳时间?

java - Android 画廊选择 - URI 路径无效

javascript - 让 dojox.layout.ContentPane 等 Dojo 小部件适用于使用 Cordova 和 NetBeans 开发的 Android 应用程序

java - Android 中的 JVM 是否优化了硬编码条件?

java.lang.numberformaexception : invalid double: ""