Was this helpful?
global with sharing class GetToken {
public String currentRecordId {get;set;}
public GetToken(ApexPages.StandardController controller) {
currentRecordId = ApexPages.CurrentPage().getparameters().get('id');
}
@RemoteAction
global static String generateToken(String recordId){
String token;
token = sharinpix.Client.getInstance().token(
new Map<String, Object> {
'Id' => recordId,
'exp' => 0,
'path' => '/pagelayout/' + recordId,
'abilities' => new Map<String, Object> {
recordId => new Map<String, Object> {
'Access' => new Map<String, Boolean> {
'see' => true,
'image_list' => true,
'image_upload' => true,
'image_delete' => true
}
}
}
}
);
return token;
}
}<apex:page standardController="Account" extensions="GetToken">
<iframe id="iframeId" class="sharinpix-iframe" src="https://app.sharinpix.com/post_message" width="100%" height="100%"></iframe>
<script>
var iframe = document.getElementById('iframeId')
iframe.onload = function() {
Visualforce.remoting.Manager.invokeAction(
"{! $RemoteAction.GetToken.generateToken }",
"{!currentRecordId}",
function(result, event) {
if (event.status) {
iframe.contentWindow.postMessage({ token: result}, 'https://app.sharinpix.com');
} else {
alert('Error. See console log.');
console.log('Result: ', result);
console.log('Event: ', event);
}
}
);
}
</script>
</apex:page><script>
var iframe = document.getElementById('iframeId')
iframe.onload = function() {
Visualforce.remoting.Manager.invokeAction(
"{! $RemoteAction.GetToken.generateToken }",
"{!currentRecordId}",
function(result, event) {
if (event.status) {
iframe.contentWindow.postMessage({ token: result}, 'https://app.sharinpix.com');
} else {
alert('Error. See console log.');
console.log('Result: ', result);
console.log('Event: ', event);
}
}
);
}
</script>iframe.contentWindow.postMessage({ token: result}, 'https://app.sharinpix.com');