Power BI Oauth 2.0 与 Autodesk 集成 BIM360/Forge

Power BI Auth2.0 integration with Autodesk BIM360/Forge

我正在尝试制作自定义 Power BI 数据连接器来连接 Autodesk BIM360/Forge。 我已经根据 power BI github connect sample.The 设置了 auth2.0 身份验证,程序在 visual studio 的调试环境中运行良好。但是,当 运行 来自 power bi 内部的相同内容时,它会在授权步骤冻结。

本页Power BI Desktop冻结- enter image description here

Visual Studio 显示身份验证已生成- enter image description here

连接器-https://mnc5d-my.sharepoint.com/:u:/p/sourav_ganguli/ETg4BHsRRMxGgPvnh5-z4l0BzDim1LBmz91vsSeaWDsysA?e=Oaak4j

代码-

 '''
    // This file contains your Data Connector logic
section PQExtension1;

client_id="VsuX1PRxOl0GQw4O52FNF9DsBgYHqPzN";
client_secret ="O0HHUVoxQFiom6XO";
Scope="data:read";
redirect_uri ="http://localhost:9000";
AuthorizeUrl="https://developer.api.autodesk.com/authentication/v1/authorize?";
TokenUri="https://developer.api.autodesk.com/authentication/v1/gettoken";

windowHeight=720;
windowWidth=720;





[DataSource.Kind="PQExtension1", Publish="PQExtension1.Publish"]
shared PQExtension1.Contents = (url as text) =>
    let
        source = Json.Document(Web.Contents(url))
    in
        source;


// Data Source Kind description
PQExtension1 = [
    Authentication = [
        OAuth = [
            StartLogin = StartLogin,
            FinishLogin = FinishLogin
            ]
       // Implicit = []
    ],
    Label = Extension.LoadString("DataSourceLabel")
];

// Data Source UI publishing description
PQExtension1.Publish = [
    Beta = true,
    Category = "Other",
    ButtonText = { Extension.LoadString("ButtonTitle"), Extension.LoadString("ButtonHelp") },
    LearnMoreUrl = "https://powerbi.microsoft.com/",
    SourceImage = PQExtension1.Icons,
    SourceTypeImage = PQExtension1.Icons
];

PQExtension1.Icons = [
    Icon16 = { Extension.Contents("PQExtension116.png"), Extension.Contents("PQExtension120.png"), Extension.Contents("PQExtension124.png"), Extension.Contents("PQExtension132.png") },
    Icon32 = { Extension.Contents("PQExtension132.png"), Extension.Contents("PQExtension140.png"), Extension.Contents("PQExtension148.png"), Extension.Contents("PQExtension164.png") }
];


StartLogin = (resourceUrl, state, display) =>
        let
            AuthorizeUrl = AuthorizeUrl & Uri.BuildQueryString([
                client_id = client_id,
                client_secret = client_secret,
                response_type="code",
                scope = Scope,
                state = state,
                redirect_uri = redirect_uri])
        in
            [
                LoginUri = AuthorizeUrl,
                CallbackUri = redirect_uri,
                WindowHeight = windowHeight,
                WindowWidth = windowWidth,
                Context = null
            ];

FinishLogin = (context, callbackUri, state) =>
    let
        Parts = Uri.Parts(callbackUri)[Query]
    in
        TokenMethod(Parts[code]);

TokenMethod = (code) =>
    let
        Response = Web.Contents(TokenUri, [
            Content = Text.ToBinary(Uri.BuildQueryString([
                client_id = client_id,
                client_secret = client_secret,
                grant_type="authorization_code",
                code = code,
                redirect_uri = redirect_uri])),
            Headers=[#"Content-type" = "application/x-www-form-urlencoded",#"Accept" = "application/json"]]),
        Parts = Json.Document(Response)
    in
        Parts;
    '''

PowerBI 可能在 Web 视图控制器中使用 IE11,它从您的系统继承权限,这可能会阻止脚本。您可以尝试添加这些权限:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_SCRIPTURL_MITIGATION
DWORD value (32 Bit): Your applciation name.exe = 1

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
DWORD value (32 Bit): Your application name.exe = 11001

还请 refresh/renew 您的 Forge 凭据机密,已在上面公开。