Nov 25 2018 10:36 PM
Hi,
Microsoft rolled out new feature 'save for later' for modern pages. Once Save for later is clicked, it becomes Saved for later, and the associated icon is filled in.
When Saved for later is clicked, a list of Recently saved items is displayed. You can click See all saved items to see the entire list of saved items. Entire list get visible on _layout/15/sharepoint.aspx page under Saved tab.
I have requirement to show these saved pages using spfx web part. I googled on this to find the way but I haven't got anything to fetch these saved pages.
I tried below things to get these saved pages but it's not return saved pages data.
1. Undocumented service - /_vti_bin/homeapi.ashx
2. https://northeurope4-sphomep.svc.ms/api/v1/documents/saveForLater?start=0&count=100
Br/ Siddheshwar
Nov 26 2018 01:12 AM
Hi,
I found the way. here is the code snippet:
private async _getApiToken() : Promise<string> {
const siteCollectionUrl = this.props.context.pageContext.web.absoluteUrl;
const restQuery = `${siteCollectionUrl}/_api/sphomeservice/context?$expand=Token`;
const httpClientOptions: ISPHttpClientOptions = {};
const response: SPHttpClientResponse = await this.props.context.spHttpClient.fetch(restQuery, SPHttpClient.configurations.v1, httpClientOptions);
const responseJson: any = await response.json();
return responseJson.Token.access_token;
// Improvement: Grab the Hub api URL from: responseJson.Urls
}
private async _getsavedForLaterPages(): Promise<void> {
const isHubSite = await this._isHubSite();
if (!isHubSite) return;
const token = await this._getApiToken();
const restQuery = `https://{region}-sphomep.svc.ms/api/v1/documents/saveForLater?start=0&count=100`;
const httpClientOptions: IHttpClientOptions = {
headers: {
'authorization': `Bearer ${token}`,
'sphome-apicontext': `{"PortalUrl":"${this.props.context.pageContext.site.absoluteUrl}"}`
}
};
const response: HttpClientResponse = await this.props.context.httpClient.fetch(restQuery, SPHttpClient.configurations.v1, httpClientOptions);
const responseJson: any = await response.json();
console.log("Saved for later data:"+responseJson);
}
Thank You,
Siddheshwar Kohale
Jan 16 2019 02:56 AM
Hi All,
As I'm using undocumented service to get the save for later pages data.
But after some day this functionality stopped working so I to find root cause I debugged the source code and found that region {northeurope4} mentioned the service get keep changing after some days.
https://northeurope4-sphomep.svc.ms/api/v1/documents/saveForLater?start=0&count=100
I don't know why it's changing so frequently , is there any way out to resolve this kind of issue?
Thank You.
Siddheshwar
Jan 24 2019 04:26 PM
SolutionThe json payload returned from:
/_api/sphomeservice/context?$expand=Token
includes a node named:
resource
which seems to show the complete hostname of the sphome.svc.ms to use.
You rightly point out this is not a documented API, so I wouldn't use it in any production code.
May 03 2019 08:13 AM
Jan 24 2019 04:26 PM
SolutionThe json payload returned from:
/_api/sphomeservice/context?$expand=Token
includes a node named:
resource
which seems to show the complete hostname of the sphome.svc.ms to use.
You rightly point out this is not a documented API, so I wouldn't use it in any production code.