J'essaye d'aller chercher le prénom connecté en utilisant fql_query.facebook-java-api: fql_query retourne null
i essayé le code suivant:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.http.*;
import javax.servlet.*;
import org.w3c.dom.Document;
import com.google.code.facebookapi.FacebookException;
import com.google.code.facebookapi.FacebookWebappHelper;
import com.google.code.facebookapi.FacebookXmlRestClient;
import com.google.code.facebookapi.IFacebookRestClient;
import org.json.JSONException;
public class Canvas extends HttpServlet {
private static final String FACEBOOK_USER_CLIENT = "facebook.user.client";
private String api_key=<API_KEY>;
private String secret=<SECRET>;
@Override
public void doGet (HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException
{
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
HttpSession session = request.getSession(true);
IFacebookRestClient<Document> userClient = getUserClient(session);
if(userClient == null) {
// logger.debug("User session doesn't have a Facebook API client setup yet. Creating one and storing it in the user's session.");
userClient = new FacebookXmlRestClient(api_key, secret);
session.setAttribute(FACEBOOK_USER_CLIENT, userClient);
}
FacebookWebappHelper<Document> facebook = new FacebookWebappHelper<Document>(request, response, api_key, secret, userClient);
String nextPage = request.getRequestURI();
nextPage = nextPage.substring(nextPage.indexOf("/", 1) + 1); //cut out the first /, the context path and the 2nd/
// logger.trace(nextPage);
boolean redirectOccurred = facebook.requireLogin(nextPage);
if(redirectOccurred) {
return;
}
redirectOccurred = facebook.requireFrame(nextPage);
if(redirectOccurred) {
return;
}
long facebookUserID;
try {
facebookUserID = userClient.users_getLoggedInUser();
} catch(FacebookException ex) {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Error while fetching user's facebook ID");
/* logger.error("Error while getting cached (supplied by request params) value " +
"of the user's facebook ID or while fetching it from the Facebook service " +
"if the cached value was not present for some reason. Cached value = {}", userClient.getCacheUserId());*/
return;
}
PrintWriter out = res.getWriter();
String query = "Select name from user where uid=" + facebookUserID;
Document fqlDocument=null;
try {
fqlDocument = userClient.fql_query(query);
} catch (FacebookException e) {
out.println("error");
}
out.println("Hello, Brave new World: " + facebookUserID + " " + fqlDocument);
out.close();
}
public static FacebookXmlRestClient getUserClient(HttpSession session) {
return (FacebookXmlRestClient)session.getAttribute(FACEBOOK_USER_CLIENT);
}
}
la sortie est entraîné:
Hello, Brave new World: <MY_UID>[#document: null]
i assuré que le fluide qui i reçu est le bon. utilisant facebook-java-api 3.0.2 (dernière version)
- pourquoi ai-je reçu un document vide de la requête?
- Pourquoi la requête n'a-t-elle pas généré d'exception pertinente en cas de problème?
- C'est un code que j'ai trouvé sur le net, y a-t-il une meilleure méthode pour implémenter mes objectifs?
merci pour tout!
Je suis vraiment nouveau dans ce sujet, je m'excuse pour toute question ou information non pertinente sur le sujet.
n'a pas trouvé une réponse encore, va essayer TinyFbClient au lieu de client java api. peut-être que je vais avoir une meilleure chance – ufk