0

最近、Spring Social と Spring Security を使用してユーザーを認証する別の開発者から Spring アプリケーションを継承しました。

書いた開発者がFacebookのアプリIDを廃止したいので、新しく作りました。そして、これが問題の始まりです。

アプリ ID とアプリ シークレットを新しいものに変更したところ、突然サインアップすると、Facebook が姓名と電子メール アドレスの配信を停止しました。

最初は、新しいアプリ ID の所有者でもある新しい Facebook ユーザーのせいかもしれないと思っていましたが、そうではありませんでした。アプリはまだ古いアプリ ID で実行されており、ユーザーにサインアップすると、前述の属性が配信されます。

ここで何が欠けていますか?developers.facebook.comで自分の Facebook アプリケーションを定義するときに、魔法のようなものを切り替える必要がありますか?

新しいアプリケーションがアクティブ化され、一般に公開されます。サイト URL とアプリ ドメイン、および有効な OAuth リダイレクト URI が設定されます。

現在、アプリケーションをテストしようとしてlocalhostいますが、Facebook アプリの設定で設定されているドメインも同様です。

のインスタンスは、使用するとorg.springframework.social.connect.UserProfileユーザーの名前を返しますが、getName()すべてgetFirstName()が返されます。getLastName()getEmail()null

4

1 に答える 1

0

spring-social-facebook問題は、古い Facebook アプリが 2 より前のバージョンの Graph API を使用し、パッケージ バージョンで完全に動作したという事実でした1.1.0

新しい Facebook アプリを作成したい場合、Graph API 1.x ではできなくなりました。

spring-social-facebook解決策は、パッケージをバージョンにアップグレード2.0.2し、次のコーディングを変更することでした

@Bean
public ProviderSignInUtils providerSignInUtils() {
    return new ProviderSignInUtils();
}

@Bean
public ProviderSignInUtils providerSignInUtils(
        final ConnectionFactoryLocator connectionFactoryLocator,
        final UsersConnectionRepository usersConnectionRepository) {
    return new ProviderSignInUtils(connectionFactoryLocator,
            usersConnectionRepository);
}
于 2015-09-23T18:25:19.890 に答える