Passing Member ID to and External Site
Some clients have want to the ability to link to another site with their Member ID in the URL. Just could be for a number of reasons, such as for referral credits, or some type of basic authentication. Using some clever JavaScript it is possible to grab the member ID and pass it on to another site.
Since Wild Apricot does not yet have an API, it isn't possible to simple pass the member ID over, we would need to read it off the page. Since the member ID is only found on the member profile page, we would need to first redirect to them to their profile and then automatically redirect them to the external site. This JavaScript is a bit complex, do not try to modify it unless you know what you're doing. If you need help with this script, please contact one of our partners http://www.wildapricot.com/partners . <script type="text/javascript">
// CHANGE THE LINE BELOW TO INCLUDE YOUR EXTERNAL URL
var ExternalSite = "http://lmgtfy.com/?q=";
/*
[ DO NOT EDIT BELOW THIS LINE ]
*/
try {
function GetMemberID () {
var spans = document.getElementsByTagName('span');
for (var i = 0; i < spans.length;){
if (spans[i].innerHTML == "Member ID") {
var MemberID = spans[i+1].innerHTML;
var chkAdr = window.location.href;
if (chkAdr.indexOf("?getID") != -1) {
window.location = ExternalSite + MemberID;
break;
}
}
i++;
}
}
if (window.BonaPage) BonaPage.addPageStateHandler(BonaPage.PAGE_PARSED, GetMemberID);
} catch(err) {}
</script>
This code goes into Settings > Global Javascript. Change the line that says ExternalSite to include the URL you want to redirect your members to, including the variable name for the member ID since the member ID will be appended to the end of the address.
To add a link to your external site while passing the member ID, simply link to this page: "/Content/Members/MemberProfile.aspx?getID"
Please use the approach described in this topic http://forums.wildapricot.com/forums/309658-developers/suggestions/11253267-web-link-with-embedded-user-data
-
meldrum commented
Seems like if WA added a hidden variable with the member id in all of the pages. that would solve this problem and be big help to us. Not a security problem because you have to be a logged in member for there to be an id. Or how about a Gadget that contained the member id. That would reduce any security concerns since it would take an admin to add the gadget to a page. If the user is not a logged in member, the member id would be null or zero.
We need it for event registration where our events are too complex for WA. You must be a member to register for our event, and this would enable our registration to get name, address etc via the api. It would only work for current members.
-
Leon Webster commented
++1 to some javascript globals that keep some member information -- their id, maybe their name, and their email address.
We are a small bicycle club, and would like to show a page with the miles the member has ridden with our club, the number of rides they have been on, etc. all compared to last year. We get that information from a separate program that manages ride statistics, but we use the Wild Apricot Member ID as the member's id in the ride stats program. I finally figured out how to build an iframe with a dynamic URL to show the member's page. but right now I need a way to get the member id. Neither of the above two methods seems to work for us.
-
bajagoodlife commented
None of the above methods seem to work as of Dec 2014. Here is how we did it:
<script type="text/javascript">
var chkAdr = window.location.href;
if (chkAdr.indexOf("?getID") != -1) {
var ExternalSite = "https://www.mysite.com/?contactID=";
var contactID = $('span:contains("User ID")').parent().next().find('span').text();
console.log('member set' + contactID);
window.location = ExternalSite + contactID;
}
</script>
Link to redirect to external site with contactID: http://www.ourwildapricotsite.com/Sys/Profile?getID
ps. All of this seems very "hacky", and it seems that there would be no security issue with offering a members contact/user ID as a javascript global when the member is logged in. Does anyone know of a better way?
-
Dmitry Buterin commented
Sorry, no, only MemberID is available. It might be able to do something via Javascript IF member profiles are open for public access. Talk to our partner Nicasio http://www.wildapricot.com/partners/
-
billsinc commented
I would also like to get the member's email address and name. Can you help with that?
-
polaris commented
Hi,
I believe that this is what I've been looking for. What I need to do is to be able to add a link to the home page of our WA site and when the user clicks the link, it will direct them to an external site with the member ID in the link.
So, I'm assuming the javascript you have provided does this. Actually, what I assume is that when the user clicks the link, they will be sent to the Member Profile page, which will then call that javascript code and automatically send them to the external URL with the member ID in tow. I added the code, unchanged except for the following:
window.location = ExternalSite + MemberID;
to window.location = "http://www.polaris-associates.com/?q=" + MemberID;
I have also added the following link to the home page of our WA site at http://polarisassociatesinc.shuttlepod.org/ <a href=http://polarisassociatesinc.shuttlepod.org/Content/Members/MemberProfile.aspx?getID" style="font-family: Arial; font-size: 16px; color: rgb(0, 0, 0);">Do Reports</a>
When I click the link on my home page, it does send me to the member profile page, but it just stays there.
Thinking that you may have meant to put GetMemberID in the link instead of getID, I tried that and there was no difference.
So, first, can I do what I'm expecting? Are my assumptions correct? If so, what am I missing?
Thank you.
Tim Dietz
-
Dmitry Buterin commented
To clarify: This applies in situation when you want to give members ability to go to an external site and pass on current memberID to that site. Here's a scenario:
- you are a member
- you are logged into a WA-based site
- admin has created a special link using the code above and inserted it somewhere on the site
- now when you click on that link, you will be taken to that external site and your memberID will be included in that link.