Jhipster社交注册和登录配置

时间:2017-11-19 19:00:34

标签: java spring angular jhipster spring-social

我试图在我的jhipster应用程序中实现注册并使用社交帐户登录。当我创建应用程序时,我检查了社交登录,因此jhipster生成了所有内容,似乎我唯一需要做的就是在谷歌,Facebook注册我的帐户以获取我的公钥和密钥。我需要实现它的配置是什么? 我还按照此链接中的说明操作:https://developers.google.com/+/web/signin/server-side-flow#step_1_create_a_client_id_and_client_secret

但我无法弄清楚如何通过密钥生成来实现它。因为我使用角4和jhipster。

Social.Component.html

<form ngNoForm action="{{ providerURL }}" method="POST">
<button type="submit" class="btn btn-block btn-social btn-{{ provider }}">
    <i class="fa fa-{{ provider }}"></i>
</button>
<input name="scope" type="hidden" value="{{ providerSetting }}"/>
<input name="_csrf" type="hidden" value="{{ csrf }}"/>

Social.Component.ts

export class JhiSocialComponent implements OnInit {
@Input() provider: string;
label: string;
providerSetting: string;
providerURL: string;
csrf: string;

constructor(
    private csrfService: CSRFService,
    private socialService: SocialService
) {}

ngOnInit() {
    this.label = this.provider.charAt(0).toUpperCase() + this.provider.slice(1);
    this.providerSetting = this.socialService.getProviderSetting(this.provider);
    this.providerURL = this.socialService.getProviderURL(this.provider);
    this.csrf = this.csrfService.getCSRF();
}

Social.Service.ts 从&#39; @ angular / core&#39;;

导入{Injectable}
@Injectable()
export class SocialService {

constructor() {}

getProviderSetting(provider) {
    switch (provider) {
        case 'google': return 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email';
        case 'facebook': return 'public_profile,email';
        case 'twitter': return '';
        // jhipster-needle-add-social-button
        default: return 'Provider setting not defined';
    }
}

getProviderURL(provider) {*
    eturn 'signin/' + provider;
}

}

SocialController.java

@RestController
@RequestMapping("/social")
public class SocialController {

private final Logger log = LoggerFactory.getLogger(SocialController.class);

private final SocialService socialService;

private final ProviderSignInUtils providerSignInUtils;

public SocialController(SocialService socialService, ProviderSignInUtils providerSignInUtils) {
    this.socialService = socialService;
    this.providerSignInUtils = providerSignInUtils;
}

@GetMapping("/signup")
public RedirectView signUp(WebRequest webRequest, @CookieValue(name = "NG_TRANSLATE_LANG_KEY", required = false, defaultValue = "\"es\"") String langKey) {
    try {
        Connection<?> connection = providerSignInUtils.getConnectionFromSession(webRequest);
        socialService.createSocialUser(connection, langKey.replace("\"", ""));
        return new RedirectView(URIBuilder.fromUri("/#/social-register/" + connection.getKey().getProviderId())
            .queryParam("success", "true")
            .build().toString(), true);
    } catch (Exception e) {
        log.error("Exception creating social user: ", e);
        return new RedirectView(URIBuilder.fromUri("/#/social-register/no-provider")
            .queryParam("success", "false")
            .build().toString(), true);
    }
}

}

0 个答案:

没有答案