I am using forcetk to upload files (as Attachment records) in a VisualForce Page and it works fine. But when I access same page in a Community, I am not able to upload the file as I am getting the "503 Service Unavailable" in console. Is this proxy is accessible in communities?

  • Hi guys, with little bit of search came to know that request url has to be set in forcetk.Client(). So I used the clientId as null, loginUrl as login url for Community and proxyUrl as "services/proxy". When i tried with this request url is becoming -> "loginUrl/apex/services/proxy" instead of "loginUrl/services/proxy". Could you please let e know is there any way i can change this? Thanks – Shrivaths Kulkarni Sep 23 '14 at 10:36
  • Was able to form the link but every time i am getting the "[{"message":"Session expired or invalid","errorCode":"INVALID_SESSION_ID"}]" error. Please suggest. – Shrivaths Kulkarni Sep 23 '14 at 13:44
  • I have the same problem when using AngularForce, which is a glue b/w AngularJS and ForceTK. – Oscar Tang Nov 4 '14 at 8:06
  • @ShrivathsKulkarni did you find a way around this? I'm currently faceing the same situation – jonathanwiesel Oct 20 '15 at 16:10

I have a solution for this if you are willing to edit your copy of forcetk.js https://github.com/developerforce/Force.com-JavaScript-REST-Toolkit/blob/master/forcetk.js

find function: forcetk.Client.prototype.setSessionToken leave it as is but at the end add:

this.instanceUrl = 'your community url';
this.proxyUrl = null;
this.visualforce = false;

This is a hack, there are ways to clean this up better, but this is the least intrusive modification I could pull off quickly.

I originally was using jsforce (which handles this nicely). Unfortunately, jsforce currently doesn't support IE9 so that's why I am here :)

| improve this answer | |
  • This did not work for me. Does some other resolve this issue? – jonathanwiesel Oct 20 '15 at 8:24
  • This should work @jonathanwiesel make sure you include the site prefix if you have one at the end of the instanceUrl: domain/site-prefix – Craig Johnson Oct 29 '15 at 4:01

If you want the same Visualforce page to work in both a Community and outside a community, you need to construct the correct instance URL and proxy URL:

var elements = location.hostname.split(".");
var instance = (elements.length == 3) ? elements[0] : elements[1];
// Are we on a Community page?
var baseURL = '{!$Site.BaseUrl}' || null;
var proxy = '/services/proxy';
var instanceURL =  baseURL || ('https://' + instance + '.salesforce.com');
var proxyURL = baseURL ? (baseURL + proxy) : proxy;

var client = new forcetk.Client();
client.setSessionToken('{!$Api.Session_ID}', 'v35.0', instanceURL);
client.proxyUrl = proxyURL;
| improve this answer | |

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.