After getting a LoginResponse from the Lemmy API, it returns an auth JWT token.
I’m trying to figure out how I can get that users person_id
or username
so I can make a GetPersonDetails request for the currently logged in user.
Any ideas on how to do this?
I haven’t tried, but usually a JWT contains some sort of user ID
https://github.com/LemmyNet/lemmy/blob/main/crates/utils/src/claims.rs#L9-L15
pub struct Claims { /// local_user_id, standard claim by RFC 7519. pub sub: i32, pub iss: String, /// Time when this token was issued as UNIX-timestamp in seconds pub iat: i64, }
For instance if I decode my current JWT, the payload contains:
{ "sub": 123, "iss": "lemmy.fmhy.ml", "iat": 1686668459 }
sub
is thelocal_user_id
If you’re unfamiliar with JWT, check https://jwt.io for a primer and a helpful tool to decode.
I was looking at that, but it didn’t seem to be the person_id of my user.
It looks like maybe local_user_id is different than person_id?
Looks like the solution here is to do a GetSite request. And that will include a
my_user.local_user_view.person.id
property.You’ll want to save the JWT and then use it as the auth parameter for GetPersonDetails
This doesn’t work either. Only passing in an
auth
parameter into GetPersonDetails is not valid and returns an error.Oh strange I would assume you would want to either include the id or the username, whatever the documentation asks for. You can also always just use the GetSite endpoint and GetSiteResponse.my_user