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 eklerken
Erişim belirtecinizi yenilemenin iki yolu vardır:
-
setAccessToken
API'sini kullanarak doğrudan Kuruluşunuz için ekleme için Azure AD belirteci kullanıyorsanız otomatik olarak
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.