I'm doing it practically the same way. The only difference with my code is that I pass the report ID to the embed function as well, but I'm not sure if that solves it.
I do it in JS like this:
window.powerbi.embed($elem[0], { embedUrl: url, accessToken: token, id: reportId // <---- report ID });
But you could also use the html attribute I suppose:
<div id="myReport" powerbi-type="report" powerbi-embed-url="https://embedded.powerbi.com/appTokenReportEmbed?reportId=cb1d25d3-418f.......b1da1053cb" powerbi-access-token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ2ZXIiYW5hbHlzaXMud2luZG93cy5uZXQvcG93ZXJiaS9...........QiLCJ3aWQiOiIxMTJlZmZmNy0yMTNlLTQwYzktYTQ2MC0wNWRhNjFkZWQzYmEiLCJyaWQiOiJiMTIwMWE5OS0wMTAwLTRiY2UtYmQ2Yy1jOTY1NTcyYTdjMTYiLCJuYmYiOjE0Njc4ODQ3MTgsImV4cCI6MTQ2Nzg4ODMxOH0.qnewuX0EF3_EUglNFpgBIKL-fA31u7xJDnRMHzuCQfs"> powerbi-id="cb1d...."</div>
Otherwise, your token may not be valid. Make sure you create a token with the workspace collection name, workspace id and report id as claims. Then you need to generate the JSON Web Token (JWT) using one of the access keys of your workspace collection found in the Azure portal. I used the Node SDK for this.