> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/verify-connection-getuserid-not-checkauth.md).

# Why does getUserId return null after init?

`checkAuth` is deprecated and only returns a boolean with no error context. **To check connection status, call `initTerra()` first, then use `getUserId()`:** a string user id means connected, `null` means not connected.

If `getUserId()` returns `null` for an already-authenticated user (for example after an SDK upgrade or stale state), re-establish the local connection:

{% stepper %}
{% step %}
Call `initTerra()`.
{% endstep %}

{% step %}
Call `initConnection()` again.
{% endstep %}

{% step %}
Call `getUserId()`.
{% endstep %}
{% endstepper %}

Re-calling `initConnection()` when access is already granted does not show the permission screen again, so the user experience is unaffected.

This validate-the-connection pattern is documented in the [mobile-only sources docs](https://docs.tryterra.co/health-and-fitness-api/mobile-only-sources).
