簡體   English   中英

與Facebook建立春季社交聯系並訪問用戶數據

[英]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不支持IMPLICIT授權。 它僅支持授權碼授予和客戶端令牌授予。 即使如此,使用隱式授予和授權代碼授予,您的應用程序仍必須重定向到Facebook(在Web瀏覽器中)才能獲得用戶的許可。 獲得批准后,它將重定向回您的應用……說到這……
  • 您設置的重定向URI為http://facebook.com 應該您的應用程序的URL,Facebook在授權后將重定向到該URL。
  • 畢竟,您甚至都不會使用authorizeUrl ...它只是在String中。 由於已經提到的原因,即使您確實使用了它也行不通,但是前5條左右的行無濟於事。
  • 您創建一個ConnectionFactoryRegistry並向其注冊FacebookConnectionFactory ...,但是隨后對ConnectionFactoryRegistry不執行任何操作。 沒關系...您幾乎幾乎不需要執行任何操作,因為它主要作為ConnectController的幫助程序存在。

如果沒有重定向“舞蹈”,根本就沒有獲得面向用戶的訪問令牌的好方法。 獲得代表您訪問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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM