Django应用切换至正式环境时Facebook登录提示“Feature Unavailable”问题求助
我正在给我的Django应用实现Facebook登录功能,开发环境下一切正常,但切换到正式环境后,却遇到了这个提示:
Feature Unavailable
Facebook Login is currently unavailable for this app, since we are updating additional details for this app. Please try again later.
我检查了开发者控制台,里面没有需要处理的必填操作。我也已经完成了以下准备工作:
- 已获取
email、public profile及其他所需权限的高级访问权限 - 完成了企业验证,并且已经将我的企业验证为技术提供商
下面是我处理Facebook登录的Django代码:
def facebook_login(request): facebook_auth_url = "https://www.facebook.com/v21.0/dialog/oauth" if "test" in request.get_full_path(): redirect_uri = request.build_absolute_uri('/test/home/facebook_login/facebook_callback/') redirect_uri = "http://localhost:8000/home/facebook_login/facebook_callback/" else: redirect_uri = request.build_absolute_uri('/home/facebook_login/facebook_callback/') scopes = "pages_show_list,business_management,read_insights,ads_read,pages_read_engagement,ads_management" state = generate_state() request.session['oauth_state'] = state params = { 'client_id': settings.META_APP_ID, 'redirect_uri': redirect_uri, 'scope': scopes, 'response_type': 'code', 'state': state, } auth_url = f"{facebook_auth_url}?{urlencode(params)}" return JsonResponse({'authorization_url': auth_url}) def facebook_callback(request): error = request.GET.get('error') if error == 'access_denied': prefix = 'test/' if os.getenv('PROD') == 'blue' else '' cancel_redirect_url = ( "http://localhost/" + prefix + "#/home/connections" if os.getenv('DEVELOPMENT') == 'True' else "https://platform.webalyze.ai/" + prefix + "#/home/connections" ) return redirect(cancel_redirect_url) state = request.GET.get('state') if state != request.session.pop('oauth_state', None): return JsonResponse({'error': 'Invalid state parameter'}, status=400) code = request.GET.get('code') if not code: return JsonResponse({'error': 'No code provided'}, status=400) token_exchange_url = "https://graph.facebook.com/v21.0/oauth/access_token" redirect_uri = request.build_absolute_uri(request.path) print('REDIRECT (facebook_callback):', redirect_uri) params = { 'client_id': settings.META_APP_ID, 'redirect_uri': redirect_uri, 'client_secret': settings.META_APP_SECRET, 'code': code, } response = requests.get(token_exchange_url, params=params) data = response.json() if 'access_token' in data: access_token = data['access_token'] saveMetaTokenToDatabase(request.user, access_token) prefix = 'test/' if os.getenv('PROD') == 'blue' else '' if os.getenv('DEVELOPMENT') == 'True': return redirect("http://localhost/" + prefix + "#/home/connections") else: return redirect("https://platform.webalyze.ai/" + prefix +"#/home/connections") else: return JsonResponse({'error': 'Failed to obtain access token'}, status=400)
我到底还漏掉了什么步骤,才能让正式环境下的Facebook登录正常工作?
备注:内容来源于stack exchange,提问作者Imre Nádas
相关产品推荐
相关产品推荐

