我已经开始使用spring social并遵循here的教程。和随后的页面。 我的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);
}
}
当我运行此代码时,我得到了所述的错误。 无法在项目mavenproject3上执行目标org.codehaus.mojo:exec-maven-plugin:1.2:exec(default-cli):命令执行失败。退出并出现错误:1(退出值:1) - > [帮助1]
要查看错误的完整堆栈跟踪,请使用-e开关重新运行Maven。 使用-X开关重新运行Maven以启用完整的调试日志记录。
有关错误和可能的解决方案的更多信息,请阅读以下文章: [帮助1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
当我注释掉这一行时:
Facebook facebook = new FacebookTemplate(accessToken);
工作正常。 有人可以建议我必要的。我是新手,请耐心等待。
答案 0 :(得分:1)
您提到的URL实际上并不是一个教程,因为它是一个参考。不可否认,它有点详细,对新用户不是很有帮助。正好注意到......我希望在我有时间的时候写一个新的教程。
你在哪里获得了accessToken的价值?如果你没有通过Facebook的OAuth2“舞蹈”获得它,那么它就无法运作。
首先,我看到你创建了一个FacebookConnectionFactory来获取OAuth20perations,你可以通过它设置重定向URI等等,然后为IMPLICIT grant建立一个授权URL。有几种不合适的东西:
在没有重定向“舞蹈”的情况下,根本没有获得面向用户的访问令牌的好方法。获得用户的许可非常重要,您将代表他们访问Facebook。如果它比这更容易,那么方式太容易创建一个漫游Facebook的应用程序,并且基本上破坏了每个人的体验。
通过重定向“舞蹈”获取访问令牌的工作由框架使用ConnectController自动处理。当然,如果您愿意,可以自己动手,但ConnectController将为您处理所有这些。
由于目前缺乏适当的教程,我建议您查看https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase。此外,它在https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase-boot有一个面向Spring Boot的版本,它可以更简化配置(尽管它依赖于尚未在官方Spring Boot版本中发生的更改)。