CeramicClient Authentication Problem

Helloo :slight_smile:

The following code is a small react app to read and create DIDs on ethereum with Metamask:

In the path SRC you can find the App.js file. I am having a big problem with the CeramicClient API authentication.

According to my intense console.log debuggings, the problem happens during the execution of this function: await ceramic.did.authenticate()

Currently I am using the endpoint of my node I run locally, but in the code I have put the endpoint of an online test node.

Whenever I click on set profile, I receive the following message on my console:

GET https://beta.3box.io/address-server/odbAddress/0 net::ERR_NAME_NOT_RESOLVED

Uncaught (in promise) SyntaxError: “undefined” is not valid JSON
at JSON.parse ()
at _callee$ (threeIdConnect.ts:57:1)
at tryCatch (runtime.js:63:1)
at Generator.invoke [as _invoke] (runtime.js:293:1)
at Generator.next (runtime.js:118:1)
at asyncGeneratorStep (index.ts:153:1)
at _next (index.ts:153:1)

I desperately need some help, this must work for a final project at my faculty. Thank you in advance for your help.

Kind regards,


Looks like you’re trying to use 3ID as our DID provider, which is deprecated and not recommended for use anymore. Can you try using did:pkh with the did-session library instead? DID Session - Ceramic Developers

1 Like

Hello Spencer, thank you for such a quick reply. I have been working on the transformation of 3ID provider into did/pkh-ethereum and did-session.
I am not sure which ethProvider to use though. I have googled a lot and nothing seems to work well. Any recomendation?
Could you please take another look at the App.js?
I am also having issues to execute this:
const client = new
const resources = client.resources

Do you have any example of a code implementing the Ceramic DID to create and read DID on ethereum with metamask?

it seems to work though when I use only
const ethProvider = window.ethereum

The problem with
const client = new ComposeClient({ceramic})

@zfer could you take a look at this

sorry, could you clarify what problem is that? Can you attach the error you are seeing?

did-session requires an ether provider that can sign, for example the window.ethereum injected by most wallets (ie metamask), an eth rpc provider just connected to a gateway is only for reading on chain data, you wont be able to create any signatures

idx libraries are deprecated as well, and should only composedb to read and write data (ie profiles, etc)

Hello everyone, thank you for your replies and sorry for my late reaction, I was on holiday. I will work hard on the improvements and come back with eventual questions.