java - 无法使用 Spring MVC 验证 Facebook 获取无效电子邮件

标签 java spring facebook rest spring-mvc

我正在尝试使用 spring 进行 ssl 安全连接来验证 facebook 我已经下载了 facebook 证书并使用 keytool 我导入了 keystore 并在下面的代码中显示了 keystore 所在的路径,但我无法验证我的身份只收到 Facebook 页面显示无效的电子邮件地址,但我使用相同的凭据登录,我能够

我的java代码:

@Controller
public class Service{


    @RequestMapping("/hello")


     public String Data(ModelMap model) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException, KeyManagementException, UnrecoverableKeyException{

        KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
        keyStore.load(new FileInputStream("/users/crohitk/Documents/workspace/frr/publickey1.cert"),
                "password".toCharArray());
        SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
                new SSLContextBuilder()
                        .loadTrustMaterial(null, new TrustSelfSignedStrategy())
                        .loadKeyMaterial(keyStore, "password".toCharArray()).build());
        HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
        ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
                httpClient);
        RestTemplate restTemplate = new RestTemplate(requestFactory);


        ResponseEntity<String> result = restTemplate.exchange("https://facebook.com/login/",  HttpMethod.POST, new HttpEntity<String>(createHeaders("email", "password")), String.class);



        model.addAttribute("message", result);

        return "helloworld";


      }


     HttpHeaders createHeaders( String username, String password ){
        HttpHeaders header =  new HttpHeaders();
        String auth = username + ":" + password;
        byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("US-ASCII")) );
        String base64Creds = "Basic " + new String( encodedAuth );
        header.add("Authorization", "Basic " + base64Creds);
        return header;
    }   


}

web.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">


    <display-name>Archetype Created Web Application</display-name>

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
    </context-param>

    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
</web-app>

dispatcher.xml 文件:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:component-scan base-package="frr.frr" />


    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/views/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
</beans>

最佳答案

将java文件中上述代码的编码凭证更改为以下代码,上述代码的编码存在一些错误

HttpHeaders createHeaders(){
    String plainCreds = "user:password";
    byte[] plainCredsBytes = plainCreds.getBytes();
    byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
    String base64Creds = new String(base64CredsBytes);


    HttpHeaders headers = new HttpHeaders();
    headers.add("Authorization", "Basic " + base64Creds);
    return headers;
}

关于java - 无法使用 Spring MVC 验证 Facebook 获取无效电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32068998/

相关文章:

java - 对 Spring Boot 应用程序使用 AJAX 请求时在 Chrome 中出现 CORS 错误

spring - 收到消息后如何停止轮询? Spring 集成

ios - 使用 Parse.com iOS 获取 Facebook 好友

java - Spring Java 电子邮件异常

java - 选择 jsoup 中的每个 html 元素

JavaFX 在控件中显示属性

spring - JSON 使用 Spring MVC 3.2 延迟结果错误返回

java - junit.framework.AssertionFailedError : Back button can't be pressed

python - facebook-python-ads-sdk - ImportError : cannot import name 'objects'

Facebook 事件隐私