Power BI Embedded from PHP. Obtain an Azure Authentication token OAuth
<p>I'm trying to utilise Power BI Embedded from a PHP based website to embed a non-public Power BI document into a web page (behind a user login).</p>

<p>There is a C# version here that I have got running: <a href="https://github.com/Azure-Samples/power-bi-embedded-integrate-report-into-web-app/" rel="nofollow">https://github.com/Azure-Samples/power-bi-embedded-integrate-report-into-web-app/</a>. I effectively need to replicate this in PHP).</p>

<p>(also see <a href="https://azure.microsoft.com/en-us/documentation/articles/power-bi-embedded-get-started/" rel="nofollow">https://azure.microsoft.com/en-us/documentation/articles/power-bi-embedded-get-started/</a>)</p>

<p>I'm stuck trying to obtain a auth-token.</p>

<p>The C# site generates an auth-token that if I paste into my PHP site, I can use to load the Power BI sheet. However, I'm not sure how to generate this from PHP - presumably a curl request somewhere, but I can't work out what I need to send where? [Edit: I've been sniffing packets and it doesn't seem to make an http request to generate this, so perhaps I just need to know how to generate it myself?]. The C# is using a built in library (PowerBIToken) to do this.</p>

<pre><code>public async Task&lt;ActionResult&gt; Report(string reportId)
    {


        var devToken = PowerBIToken.CreateDevToken(this.workspaceCollection, this.workspaceId);
        using (var client = this.CreatePowerBIClient(devToken))
        {
            var reportsResponse = await client.Reports.GetReportsAsync(this.workspaceCollection, this.workspaceId);
            var report = reportsResponse.Value.FirstOrDefault(r =&gt; r.Id == reportId);
            var embedToken = PowerBIToken.CreateReportEmbedToken(this.workspaceCollection, this.workspaceId, report.Id);

            var viewModel = new ReportViewModel
            {
                Report = report,
                AccessToken = embedToken.Generate(this.accessKey)
            };

            return View(viewModel);
        }
    }
</code></pre>

<p>I'm looking for a simple solution where I can walk through each step rather than a bloated library if possible.</p>