亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Django 中使用 allauth 從 Linkedin 獲取 emailAddress?

如何在 Django 中使用 allauth 從 Linkedin 獲取 emailAddress?

慕田峪7331174 2021-12-16 15:55:19
我想使用 Linkedin 注冊用戶,以檢索他們的姓名、姓氏和電子郵件。為此,我在 Django 上使用 allauth。我可以注冊名字和姓氏,但我無法從數據中自動保存電子郵件。查看主頁 ? 社交帳戶 ? 社交帳戶 ? “the_user” on Extra data: {"elements": [{"handle": "urn:li:emailAddress:152954186", "handle~": {"emailAddress": "example @example.com"}}], "firstName": { ... . 我可以看到代碼確實檢索了電子郵件,但它沒有存儲它。簽入 select * from auth_user;(from database) 或在 Home ? Authentication and Authorization ? Users 中,我看到代碼不會自動存儲電子郵件。我想代碼檢索名字和姓氏,因為這些項目不在數組中。我的linkedin 應用程序具有r_emailaddress、r_liteprofile 和w_member_social 權限,并且我使用的是OAuth 2.0。在 settings.py 上:ALLOWED_HOSTS = ['localhost']INSTALLED_APPS = [...    'django.contrib.sites',    'allauth',    'allauth.account',    'allauth.socialaccount',    'allauth.socialaccount.providers.facebook',    'allauth.socialaccount.providers.linkedin_oauth2',]SOCIALACCOUNT_QUERY_EMAIL = TrueSOCIALACCOUNT_PROVIDERS = \{'linkedin_oauth2': {        'SCOPE': [            'r_liteprofile',            'r_emailaddress',            'w_member_social',        ],        'PROFILE_FIELDS': [            'id',            'firstName',            'lastName',            'emailAddress',            'email-address',            'profilePicture',            'public-profile-url',        ],        'LOCATION_FIELDS': [            'location',        ],        'POSITION_FIELDS': [            'company',        ]    }}SOCIAL_AUTH_LINKEDIN_OAUTH2_KEY = 'secret'  # App IDSOCIAL_AUTH_LINKEDIN_OAUTH2_SECRET ='secret' #app key
查看完整描述

2 回答

?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

我沒有正確檢查情況。我嘗試存儲的電子郵件已經在account_emailaddress 上注冊,該表對 email 列具有唯一約束,因此我無法保存來自其他 socialaccount_socialaccount(用于存儲來自社交網絡的注冊用戶的表)的相同電子郵件。從 account_emailaddress 中刪除條目可以解決該問題。

在那之后,我在 /accounts/linkedin_oauth2/login/callback/ 得到了 ConnectionRefusedError,通過在 settings.py 上編碼得到解決

ACCOUNT_EMAIL_VERIFICATION = 'none'

正如那邊的州https://github.com/pennersr/django-allauth/issues/1740


查看完整回答
反對 回復 2021-12-16
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

Allauth 提供了通過EmailAddress對象為單個用戶存儲多封電子郵件,其中包括一個verified字段和一個primary字段。EmailAddress保存為主要電子郵件的 Allauth對象將在保存對象時將電子郵件地址自動復制到用戶模型email上的字段(在您的情況下)。因此,您可以執行以下操作:auth_userEmailAddress

from allauth.account.models import EmailAddress

email, created = EmailAddress.objects.get_or_create(user=request.user, email=email_address_from_linked_in, verified=True, primary=True)

if not created:
    email.primary = True
    email.save()

再次,關鍵是要設置primaryEmailAddressTrue為了有自動復制到的電子郵件地址email中的字段用戶模型。


查看完整回答
反對 回復 2021-12-16
  • 2 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號