当前位置: 首页 > 知识库问答 >
问题:

与Facebook建立Spring社交连接并访问用户数据

蔺弘
2023-03-14

我已经开始使用Spring Social并按照这里的教程工作。和随后的页面。我的java文件如下所示。

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

//import org.springframework.boot.SpringApplication;
//import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionFactory;
import org.springframework.social.connect.ConnectionFactoryLocator;
import org.springframework.social.connect.support.ConnectionFactoryRegistry;
import org.springframework.social.facebook.api.Comment;
import org.springframework.social.facebook.api.CommentOperations;
import org.springframework.social.facebook.connect.FacebookConnectionFactory;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.impl.FacebookTemplate;
import org.springframework.social.oauth2.AccessGrant;
import org.springframework.social.oauth2.GrantType;
import org.springframework.social.oauth2.OAuth2Operations;
import org.springframework.social.oauth2.OAuth2Parameters;
//import org.springframework.social.UserIdSource;
//import org.springframework.social.connect.ConnectionFactoryLocator;
//import org.springframework.social.connect.ConnectionRepository;
//import org.springframework.social.connect.web.ConnectController;

@Configuration
@EnableAutoConfiguration
@Import(FacebookConfig.class)
@ComponentScan
public class App {

   static private String accessToken = "accesstoken";
   static private String secretKey = "secretkey"; 
   static private String clientId = "clientid";
   public static void main(String[] args) {
        FacebookConnectionFactory connectionFactory = new FacebookConnectionFactory(clientId, secretKey);
        OAuth2Operations oauthOperations = connectionFactory.getOAuthOperations();
        OAuth2Parameters params = new OAuth2Parameters();
        params.setRedirectUri("http://facebook.com");
        String authorizeUrl = oauthOperations.buildAuthorizeUrl(GrantType.IMPLICIT_GRANT, params);
        AccessGrant accessGrant = new AccessGrant(accessToken);
        System.out.println(accessGrant.getAccessToken());
        System.out.println(accessGrant.getExpireTime());
        System.out.println(accessGrant.getScope());
        ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
        registry.addConnectionFactory(connectionFactory);
        Facebook facebook = new FacebookTemplate(accessToken);
}

}

当我运行此代码时,我得到了所述的错误。无法执行目标org.codehaus.mojo: exec-maven-plugin: 1.2: exec(default-cli)on project mavenproject ect3:命令执行失败。进程退出错误:1(退出值:1)-

要查看错误的完整堆栈跟踪,请使用-e开关重新运行Maven。使用-X开关重新运行Maven以启用完整调试日志记录。

有关错误和可能的解决方案的更多信息,请阅读以下文章:[帮助1]http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

当我注释这行时:

Facebook facebook = new FacebookTemplate(accessToken);

它工作得很好。谁能给我推荐一下必备品吗。我是个新手,所以请容忍我。

共有1个答案

夏侯楷
2023-03-14

你提到的URL与其说是一个教程,不如说是一个参考。诚然,它有点详细,对新用户没有多大帮助。正式注明。。。希望我一有时间就写一篇新的教程。

你从哪里得到访问令牌的价值?如果你没有通过与脸谱网的OAuth2“舞蹈”获得它,那么它就不会起作用。

首先,我看到您创建了一个FacebookConnectionFactory来获得OAuth2Operations,通过它您可以设置一个重定向URI,等等。。然后为隐式授权构建授权URL。有几件事不太对劲:

  • 脸书不支持隐性拨款。它仅支持授权码授予和客户端令牌授予。即便如此,使用隐式授权和授权码授权,你的应用程序必须重定向到Facebook(在网络浏览器中)才能获得用户的许可。一旦批准,它将重定向回你的应用程序。。。说到这里
  • 您设置的重定向URI为http://facebook.com.这应该是你的应用程序的URL,Facebook将在授权后重定向回该URL
  • 在这一切之后,你甚至从未使用过授权URL。。。它只是一个字符串。出于前面提到的原因,即使您确实使用了它,它也不会起作用,但前5行左右的内容都是徒劳的
  • 您创建一个ConnectionFactoryRegistry并向其注册FacebookConnectionFactory。。。但是你什么也不做,连接工厂注册。没关系。。。无论如何,您几乎不需要对它做任何事情,因为它主要作为ConnectController的助手存在

如果没有重定向“舞蹈”,就没有获得面向用户的访问令牌的好方法。获得你将代表其访问Facebook的用户的许可非常重要。如果比这更容易的话,那么创建一个向脸书发送垃圾邮件的应用程序就太容易了,它基本上破坏了每个人的体验。

通过重定向“舞蹈”获取访问令牌的工作由使用ConnectController的框架自动处理。当然,如果你愿意,你可以自己做,但ConnectController将为你处理所有这些。

由于目前缺乏合适的教程,我建议您看看https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase.此外,还有一个面向Spring Boot的版本https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase-boot这进一步简化了配置(尽管它依赖于尚未在正式的Spring Boot版本中出现的更改)。

 类似资料:
  • 我试图访问facebook数据通过Spring的社会facebook集成使用的说明http://spring.io/guides/gs/accessing-facebook. 但目前我面临两类问题 > 当我运行教程中提到的示例时,我得到以下错误 没有为依赖项找到类型为[org.springframework.social.facebook.api.facebook]的匹配bean 当我在Faceb

  • 我正在使用spring social for facebook,

  • 前面介绍了 MySQL 的安装,相信您已经对 MySQL 安装操作有了进一步认识,本小节主要介绍如何在 Windows、Linux 上和 MySQL 建立连接,另外还介绍如何使用 PHP 代码和 MySQL 建立连接。 1. 命令行连接 MySQL 前面介绍了在 Windows 下安装最新版 MySQL 初始化安装步骤,启动 MySQL 服务,记录的初始密码可用于 “root” 账户登录进行相关操

  • 我使用在AMPS(windows 10)上安装laravel。 它起作用了。 但是现在我想连接到MySQL。 我创建了一个“blog”数据库并更改了这两个文件:。环境文件: 和 /config/database.php: 但当我想迁移时,仍然会收到以下消息: C:\ProgramFiles(x86)\Ampps\www\blog [illumb\Database\QueryException] S

  • 我试图使用Python Twisted Authobhan websocket客户端打开客户端(每台机器有60K端口限制)的并发websocket连接。但是我无法使用下面的代码打开不超过20K的连接: 我在一个循环中使用了“reactor.connecttcp”,使用Twisted打开并发websocket连接是否正确? 让我知道。

  • 当使用ojdbc6.jar或ojdbc5.jar时,从独立java应用程序连接到Oracle12c将成功。 连接字符串: 而在通过Websphere进行连接时,相同的连接字符串将失败,出现以下异常。 java.SQL.sqlexception:ORA-28040:没有匹配的身份验证协议DSRA0010E:SQL状态=99999,错误代码=28,040 注意:已尝试和