我在我的应用程序中使用spring-security-oauth-facebook:0.1 grails插件.现在我想访问人的电子邮件ID,但我不能每次facebook服务器响应1829812989120 for socialId,Username,profileId并且没有电子邮件选项在返回Map对象时.为什么会发生这种情况.
oauth { debug = true providers { facebook { api = org.scribe.builder.api.FacebookApi key = 'my-app-key' secret = 'secret-key' successUri = '/oauth/facebook/success' failureUri = '/oauth/facebook/failure' callback = "${baseURL}/oauth/facebook/callback" scopes = "['public_profile','email','name','user']" } def sessionKey = oauthService.findSessionKeyForAccessToken(provider) if (!session[sessionKey]) { log.warn "No OAuth token in the session for provider '${provider}'" throw new OAuthLoginException("Authentication error for provider '${provider}'") } // Create the relevant authentication token and attempt to log in. OAuthToken oAuthToken = springSecurityOAuthService.createAuthToken(provider, session[sessionKey]) println "oAuthToken.principal = "+oAuthToken.principal.toString(); println "oAuthToken.socialId = "+oAuthToken.socialId; println "oAuthToken.properties= "+oAuthToken.properties println "oAuthToken.properties= "+oAuthToken.name println "oAuthToken.properties= "+oAuthToken.toString();
1)我ckecked所有println值电子邮件不存在.请帮我如何获取登录用户的电子邮件地址.
创建会话后使用此代码
OAuthToken oAuthToken = springSecurityOAuthService.createAuthToken(provider, session[sessionKey]) Token facebookAccessToken = (Token) session[oauthService.findSessionKeyForAccessToken('facebook')] println "Facebook token :"+facebookAccessToken def facebookResource = oauthService.getFacebookResource(facebookAccessToken , "https://graph.facebook.com/me") def facebookResponse = JSON.parse(facebookResource?.getBody())