我正在与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);
}


我的问题是,一旦我致电身份验证,便不会发生任何反应,并且无法打开neura登录屏幕

最佳答案

您可以检查的几件事:

您是否按照initNueraConnection()中所述声明了fetchPermissions()Neura dev site

如果是这样,我怀疑您正在发送authenticate(...)可为空的mAuthenticateRequest实例。
由于fetchPermissions()是异步的(通过网络调用),因此您要在从fetchPermissions()提取结果之前调用authenticate(...),因此,mAuthenticateRequest为null,因为它尚未启动。
仅在收到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可为空,无法创建身份验证请求。

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

10-10 03:47