调用 neuraApiClient.authenticate(...) 时未打开 Nuera 身份验证屏幕
Nuera authentication screen isn't opened when calling neuraApiClient.authenticate(...)
我正在使用 Neura sdk 来检测我的用户的特殊事件(arriving/leaving 家)
我正在尝试启动他们的身份验证,如下所述(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() and fetchPermissions() as described in the 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 可为空,无法创建身份验证请求。
我正在使用 Neura sdk 来检测我的用户的特殊事件(arriving/leaving 家) 我正在尝试启动他们的身份验证,如下所述(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() and fetchPermissions() as described in the 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 可为空,无法创建身份验证请求。