[英]spring social connectivity with Facebook and accessing user data
我已經開始使用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);
}
}
當我運行此代碼時,出現錯誤提示。 無法在項目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);
工作正常。 有人可以建議我這個條件嗎? 我是新手,所以請多多包涵。
您提到的URL實際上不是參考指南,而是教程。 誠然,它有點詳細,對新用戶不是很有幫助。 適當地指出...希望有空的話可以立即編寫一個新教程 。
您從哪里獲得accessToken的價值? 如果您沒有通過Facebook的OAuth2“舞蹈”獲得它,那么它將無法正常工作。
首先,我看到您創建了一個FacebookConnectionFactory來獲取OAuth2Operations,通過它可以設置重定向URI等,然后為IMPLICIT授予構建授權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官方發行版中進行的更改)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.