Aracılığıyla paylaş


Erişim belirtecini yenileme

Power BI içeriği (raporlar, panolar ve kutucuklar) eklemek ve bunlarla etkileşimde bulunarak erişim belirteci gerekir. Erişim belirteci, kuruluşunuz için eklerkenbir Azure AD belirteci veya müşterileriniz için eklerken ekleme belirteciolabilir. Erişim belirtecinin bir süre sonu süresi vardır; başka bir deyişle Bir Power BI öğesini ekledikten sonra bu öğeyle etkileşime geçmek için sınırlı bir süreniz olur. Kullanıcılarınıza sürekli bir deneyim sunmak için erişim belirtecini süresi dolmadan önce yenileyin (veya yenileyin).

Erişim belirtecinizi yenilemenin iki yolu vardır:

Erişim belirtecini doğrudan yenileme

setAccessToken, eklenmiş raporu yeniden yüklemeden erişim belirtecini güncelleştirmek için kullanılabilir. Belirtecin süresi dolduğunda bunu kullanın.

await report.setAccessToken(newAccessToken);

El ile belirteç yenileme örneği

Erişim belirtecinizi el ile yenilemek için getNewUserAccessToken() uygulamasını uygulayın. Bu işlev yeni bir ekleme belirteci oluşturmak için uygulamanızı arka ucu çağırır veya Azure AD belirtecini yeniler.

Aşağıda, erişim belirtecinizin süresi dolmadan önce yenilemek için getNewUserAccessToken() işlevini el ile uygulama örneği verilmiştir.

const MINUTES_BEFORE_EXPIRATION = 10;

// Set the refresh interval time to 30 seconds
const INTERVAL_TIME = 30000;

// Get the token expiration from the access token
var tokenExpiration;

// Set an interval to check the access token expiration, and update if needed
setInterval(() => checkTokenAndUpdate(reportId, groupId), INTERVAL_TIME);

function checkTokenAndUpdate(reportId, groupId) {
    // Get the current time
    const currentTime = Date.now();
    const expiration = Date.parse(tokenExpiration);

    // Time until token expiration in milliseconds
    const timeUntilExpiration = expiration - currentTime;
    const timeToUpdate = MINUTES_BEFORE_EXPIRATION * 60 * 1000;

    // Update the token if it is about to expired
    if (timeUntilExpiration <= timeToUpdate)
    {
        console.log("Updating report access token");
        updateToken(reportId, groupId);
    }
}

async function updateToken(reportId, groupId) {
    // Generate a new embed token or refresh the user Azure AD access token
    let newAccessToken = await getNewUserAccessToken(reportId, groupId);

    // Update the new token expiration time
    tokenExpiration = newAccessToken.expiration;

    // Get a reference to the embedded report HTML element
    let embedContainer = $('#embedContainer')[0];

    // Get a reference to the embedded report.
    let report = powerbi.get(embedContainer);

    // Set the new access token
    await report.setAccessToken(newAccessToken.token);
}

// Add a listener to make sure token is updated after tab was inactive
document.addEventListener("visibilitychange", function() {​​​​
    // Check the access token when the tab is visible
    if (!document.hidden) {​​​​
        checkTokenAndUpdate(reportId, groupId)
    }​​​​
}​​​​);

Belirteci otomatik olarak yenile

Kuruluşunuz için ekleme senaryosu için bir Azure AD belirteci kullanıyorsanız, ekleme yapılandırma parametrelerinizde bir olay kancası ayarlayarak erişim belirtecini otomatik olarak yenileyebilirsiniz. Olay kancası, yeni belirteçler oluşturan bir işlevi çağırır ve oluşturulan belirteci geçerli belirtecin süresi dolmadan önce eklenmiş öğeye atar. Tek yapmanız gereken belirteç oluşturma işlevini sağlamaktır ve gerisi otomatik olarak gerçekleşir.

Not

Erişim belirtecinin otomatik olarak yenilenmesi powerbi-client JavaScript kitaplığı sürüm 2.20.1'den desteklenir.

Erişim belirtecini otomatik olarak yenilemek için accessTokenProvider işlevini ekleme sırasında IEmbedConfiguration parametresi olarak ayarlayın. Bu işlev müşteri tarafından uygulanır ve çağrıldığında yeni bir belirteç döndürür. Belirtecin süresi dolmak üzereyken iframe, barındırma uygulamasından yeni bir belirteç almak için accesTokenProvider kancasını çağırır ve ardından yeni belirteci ayarlar.

Belirteci otomatik olarak yenile örneği

Aşağıda, erişim belirtecinizin süresi dolmadan önce otomatik olarak nasıl yenilendiğini gösteren bir örnek verilmiştir.

let getNewAccessToken = async function () {
        // Code you need to add for generating new Azure AD token
        return token;
    };

let config = {
        type: 'report',
        tokenType: models.TokenType.Aad,
        accessToken: “eyJ0 …”,
        embedUrl: “https: …”,
        eventHooks: {
            accessTokenProvider: getNewAccessToken
        }
    };

// Get a reference to the embedded report HTML element
let embedContainer = $('#embedContainer')[0];

// Embed the report and display it within the div container.
report = powerbi.embed(embedContainer, config);

Dikkat edilmesi gerekenler ve sınırlamalar

  • Erişim belirtecinin otomatik olarak yenilenmesi yalnızca kuruluşunuzun (verilerin sahibi kullanıcıdır) senaryosu için ekleme işlemi için desteklenir.
  • accessTokenProvider olay kancası hiçbir zaman özel durum oluşturmamalıdır. Yeni bir belirteç oluşturamıyorsa Null değeri döndür.

Farklı ekleme çözümlerini anlama