All Sites & Public Resources...
Products & Services
Data Science Platform
Personal Analytics for Facebook
Wolfram|Alpha for Mobile
Course Assistant Apps
Paid Project Support
All Products & Services »
Revolutionary knowledge-based programming language.
Central infrastructure for Wolfram's cloud products & services.
Technology-enabling science of the computational universe.
Computable Document Format
Computation-powered interactive documents.
Software engine implementing the Wolfram Language.
Wolfram Natural Language Understanding System
Knowledge-based broadly deployed natural language.
Wolfram Data Framework
Semantic framework for real-world data.
Wolfram Universal Deployment System
Instant deployment across cloud, desktop, mobile, and more.
Curated computable knowledge powering Wolfram|Alpha.
All Technologies »
Aerospace & Defense
All Solutions for Education
Web & Software
Authoring & Publishing
Finance, Statistics & Business Analysis
Financial Risk Management
Internet of Things
All Solutions »
Support & Learning
Find an Answer
Ask for Help
Post a Question
Videos & Screencasts
Conferences & Seminars
All Support & Learning »
Work with Us
A New Kind of Science
Wolfram + Raspberry Pi
Wolfram Innovator Awards
All Company »
More Info >>
Mark as an Answer
Authorizing SocialMediaData through JLink or custom Front End
External Programs and Systems
I am trying to use SocialMediaData through JLink. Functions that don't require authorization such as SocialMediaData["Facebook","Properties"] work fine, but when I try to do something like SocialMediaData["Facebook", "Friends"] I get a packet back saying "A front end is not available; certain operations require a front end." Presumably, the front end is required to ask the user for the facebook access key. Is there a way to give the kernel the access key programmatically through JLink, or alternatively, to write my own front end that could imitate Mathematica's front end for the purpose of returning the access key to the kernel?
Try using Developer`UseFrontEnd. Is there something about your machine which is preventing you from using the front end? or where you looking to script this?
I'm accessing JLink from within a web server, so it can't open a front end that the client can see. P.S. the original post says "updating name" but it was me. Not sure why except maybe I posted too soon after creating the account.
It appears that I can invoke "MathLink`SetFrontEnd[$ParentLink]" through a MathLink connection and then it thinks I'm the front end. At this point a lot of reverse engineering would probably have to happen to actually imitate a front end. We will see how far I get.
If there's no supported way to do this (as it seems), reverse engineering it is going to be rather difficult because all the relevant symbols are Locked.
I think that if you want to provide a service like this, you will need to create your own Facebook application that will help with exporting the data (and you'll need to take responsibility for it as a Facebook app developer). It'll need to be authorized in a similar way to how SocialMediaData is. Before this function was available, I used
, which may be helpful for you to study how this works.
The documented version of Developer`UseFrontEnd is UsingFrontEnd.
Sorry about the "Updating Name".
We are aware of the issue and are working on it.
Your name will be fixed - no need to repost this or change how you create posts. .
Indeed, I came to a dead end as far as imitating the front end. I got farther than I thought I would, though. I like that MathLink is transparent enough to at least give a glimpse of what is going on.
Another approach I thought to try was to override a function within Mathematica. For example, I tried this, using an access token than I had retrieved with my own code:
None,Automatic,"verifier",Automatic,Automatic,"(my consumer key here)",
"(my consumer secret here)","https://www.facebook.com/dialog/oauth","RemoveWhitespace",
HTTPClient`OAuth`Private`Token20["(my valid access token here)"]]
But then when I try this:
token = HTTPClient`OAuthAuthentication[
"ConsumerKey" -> "(my consumer key)",
"ConsumerSecret" -> "(my consumer secret)",
"AuthorizeEndpoint" -> "https://www.facebook.com/dialog/oauth",
"AccessEndpoint" -> "https://graph.facebook.com/oauth/access_token",
"RedirectURI" -> "https://www.facebook.com/connect/login_success.html",
"OAuthVersion" -> "2.0",
"AccessTokenExtractor" -> "Text/2.0"]
The regular oauth dialog pops up, as if the function had not been overridden. Have I done this incorrectly? Or is this function somehow locked? I tried using "unprotect" but that had no effect.
Also, this dialog looks different than the one that pops up when I use SocialMediaData, so I am not sure if SocialMediaData even uses this function. So, perhaps there is too much reverse engineering required altogether in this endeavor. But I thought I would give it a shot.
Data Science Platform
Volume & Site Licensing
Wolfram Language Documentation
Connected Devices Project
Wolfram + Raspberry Pi
© 2014 Wolfram. All rights reserved.