我试图在我的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);
}
}
}