I am developing a dapp where I need the public key of an address of the user, is it possible to get the public key in the contract (using SmartPy)? Or even on the client side using taquito or any other library?
It is not possible to do from inside a contract. But you can use the following RPC:
In the contract, you cannot obtain the public key from an address but if you are given both the public key and the address you can check that the public key corresponds to the address. In Michelson, assuming you have the address and the public key at the top of your stack this is done with
HASH_KEY; IMPLICIT_ACCOUNT; ADDRESS; COMPARE; EQ.
In the client, you can use the RPC linked in @rodrigo-quelhas' answer but it will only work if the public key for the account has been revealed on chain. Usually revelation is done just before the first transfer from the implicit account.