1

I have got a special problem using the "sforce.one.navigateToURL" command in a visualforce page.

I am using the following code snippet to redirect a user from a visualforce Page to a Lightning Component. Unfortunaetly this does not work anymore in the Salesforce1 App since the Winter 2018 Release. I do get the error message:

"You cant view this page, either beause you dont have permission or because the page isnt supported on mobile devices."

Nevertheless everything works fine in Browser on Mobile and Desktop.

function showMobilePage(){
        //redirect to mobile page; URL Hacking is necessary as salesforce doesent provide a navigation container for this use case
        var url = window.location.href;
        var urlParameter;
        var id;

        /&id=([^&]+)/.exec(url) && (id = /id=([^&]+)/.exec(url)[1]);
        //show create page, to edit a Record
        urlParameter = "{\"componentDef\" : \"c:lightningComp\" " +
                ", \"attributes\" : {" +
                "\"recordId\" : \""+ id + "\" }}"; 

        //use base64 encoding to generate url
        encodedURL = encodeStringBase64(urlParameter);
        sforce.one.navigateToURL('/one/one.app#' + encodedURL , true); 
    };

function encodeStringBase64(inputString){
    console.log(inputString);
    // Create Base64 Object
    var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}
    // Encode the String
    return Base64.encode(inputString);
}

Any help will be greatly appreciated. :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.