0
我正在嘗試爲我正在開發的應用程序實現Facebook登錄。如何使用Facebook Python SDK從訪問令牌獲取用戶的電子郵件
我得到一個訪問令牌是這樣的:
<!DOCTYPE html>
<html>
<head></head>
<body>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '[Redacted]',
xfbml : true,
version : 'v2.6'
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
window.location = "http://[my domain]/FBloginAuth?"+FB.getAuthResponse()["accessToken"]
} else {
window.location = encodeURI("https://www.facebook.com/dialog/oauth?scope=email&client_id=[redacted]&redirect_uri=http://[my domain]/FBloginAuth&response_type=token");
}
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "http://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div id="status"></div>
</body>
</html>
我的服務器,然後纔對從像這樣(Python 2裏的URL訪問令牌,因爲我必須支持谷歌的OAuth SDK這似乎並不以支持Python 3.):
graph = facebook.GraphAPI(access_token=environ["QUERY_STRING"]) # Apparently there is an extrea
profile = graph.get_object('me')
args = {'fields' : 'id,name,email', }
profile = graph.get_object('me', **args)
print(profile)
我知道這不會解析URL中有變量的情況。這不是重點。現在我手動餵食這個標記。代碼嘔吐:
{u'id': u'[redacted]', u'name': u'[redacted]'}
我的問題是爲什麼電子郵件沒有出現在響應中,因爲我在詢問令牌時設置了範圍。另外,我應該怎麼做才能收到電子郵件?
請確保a)用戶已授予您的應用權限(請求'/ me/permissions'來確認,使用相同的訪問權限令牌),和b)他們的電子郵件地址通過Facebook驗證。 – CBroe
好的,我試過了。該電子郵件已驗證(至少我已登錄)。嘗試請求/ me /權限給出: –
{ 「error」:{ 「message」:「必須使用活動訪問令牌來查詢有關當前用戶的信息。」, 「type」:「OAuthException」, 「代碼」:2500年, 「fbtrace_id」: 「G5cUTqW1eBL」 }} –