java - 调用 Facebook API 的 Servlet 获取访问 token

标签 java jsp servlets oauth-2.0

问题已编辑:

我正在使用 Captain Casa 框架。

我有一个按钮,可以打开新选项卡并转到 Facebook 登录页面。

public void goTofbPage(javax.faces.event.ActionEvent event){ 
FBConnection fbConnection = new FBConnection(); 
setBrowserUrl(fbConnection.getFBAuthUrl()); 
m_browserTrigger.trigger(); 
}

如果用户登录成功,它将重定向到我的页面以及用户的数据。

为了从用户那里获取 accessToken,我使用了 HttpServlet。

但是我怎样才能调用这个HttpServlet呢?

我真的需要调用它还是它会自动运行?

我的jsp看起来像这样。

<!-- ========== CONTENT BEGIN ========== -->
<f:view>
<h:form>
<f:subview id="lgwfacebookg_sv">
<t:beanprocessing id="g_1" >
<t:clienthttpsender id="g_2" />
<t:jshowurl id="g_3" target="_blank" trigger="#{d.lgwfacebook.browserTrigger}" url="#{d.lgwfacebook.browserUrl}" usedesktop="true" />
<t:timer id="g_4" duration="1000" durationtype="regular" />
</t:beanprocessing>
<t:rowtitlebar id="g_5" />
<t:rowheader id="g_6" />
<t:rowbodypane id="g_7" >
<t:row id="g_8" >
<t:label id="g_9" text="#{d.lgwfacebook.name}" />
</t:row>
<t:row id="g_10" >
<t:field id="g_11" text="#{d.lgwfacebook.browserUrl}" width="0" />
</t:row>
<t:row id="g_12" >
<t:button id="g_13" actionListener="#{d.lgwfacebook.onRedirectUrl}" height="10" image="/images/fbimg.png" width="10" />
</t:row>
<t:rowdistance id="g_14" height="20" />
<t:row id="g_15" />
<t:row id="g_16" >
<t:browser id="g_17" url="#{d.lgwfacebook.fbbrowserURL}" />
</t:row>
</t:rowbodypane>
<t:rowstatusbar id="g_18" />
<t:pageaddons id="g_pa"/>
</f:subview>
</h:form>
</f:view>
<!-- ========== CONTENT END ========== -->

我也已将其添加到 web.xml 中。

<servlet> 
<servlet-name>MainMenu</servlet-name> 
<servlet-class>managedbeans.MainMenu</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>MainMenu</servlet-name> 
<url-pattern>/MainMenu</url-pattern> 
</servlet-mapping> 

我的Servlet代码:

public class MainMenu extends HttpServlet{
        private static final long serialVersionUID = 1L;
        private String code="";

        public void service(HttpServletRequest req, HttpServletResponse res)
                throws ServletException, IOException {

            code = req.getParameter("code");
            if (code == null || code.equals("")) {
                throw new RuntimeException(
                        "ERROR: Distadn't get code parameter in callback.");
            }
            FBConnection fbConnection = new FBConnection();
            String accessToken = fbConnection.getAccessToken(code);

            FBGraph fbGraph = new FBGraph(accessToken);
            String graph = fbGraph.getFBGraph();
            Map<String, String> fbProfileData = fbGraph.getGraphData(graph);
            ServletOutputStream out = res.getOutputStream();
            out.println("<div>Welcome "+fbProfileData.get("first_name"));
            out.println("<div>Your Email: "+fbProfileData.get("email"));
        }

最佳答案

如果它是 Servlet,那么您需要在 Servlet 容器内运行它,例如 TomcatJetty .

当 Servlet 容器运行时,它会绑定(bind)到特定的 IP 或主机名以及 TCP 端口,您应该通过该地址访问它。例如,如果您在本地主机上运行 Tomcat(例如,在开发过程中)并且它监听端口 8080,那么您可以通过对

进行 HTTP 调用来执行您的 servlet

http://127.0.0.1:8080/MainMenu

其中“/MainMenu”端点必须与您在 url-pattern 下的 web.xml 部署描述符中输入的值匹配

关于java - 调用 Facebook API 的 Servlet 获取访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49663522/

相关文章:

java - 使用 sed/awk/whatever 从 *nix 上的日志中获取异常

java - 如何将reSTLet请求的json类型输入转换为POJO?

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

javascript - 谷歌地图错误(创建标记)

java - 后退按钮后,portlet 不会进入 processaction

jakarta-ee - Tomcat 上出现 "Servlet is currently unavailable"错误

java - 通过单击 Eclipse Java 桌面应用程序中的图像从欢迎页面加载 VIEW

tomcat - 一个jvm中的servlet如何与另一个jvm中的servlet通信

javascript - 标记 <p> 不保留从 &lt;script&gt; 收到的值

java - 在哪里保存选择标记的值列表?