This file is indexed.

/usr/share/doc/python-django-allauth/html/providers.html is in python-django-allauth-doc 0.35.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Providers &#8212; django-allauth 0.32.0 documentation</title>
    <link rel="stylesheet" href="_static/classic.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    './',
        VERSION:     '0.32.0',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true,
        SOURCELINK_SUFFIX: '.txt'
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="Signals" href="signals.html" />
    <link rel="prev" title="Configuration" href="configuration.html" /> 
  </head>
  <body>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="signals.html" title="Signals"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="configuration.html" title="Configuration"
             accesskey="P">previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="index.html">django-allauth 0.32.0 documentation</a> &#187;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="providers">
<h1>Providers<a class="headerlink" href="#providers" title="Permalink to this headline"></a></h1>
<p>Most providers require you to sign up for a so called API client or app,
containing a client ID and API secret. You must add a <code class="docutils literal"><span class="pre">SocialApp</span></code>
record per provider via the Django admin containing these app
credentials.</p>
<p>When creating the OAuth app on the side of the provider pay special
attention to the callback URL (sometimes also referred to as redirect
URL). If you do not configure this correctly, you will receive login
failures when attempting to log in, such as:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">An</span> <span class="n">error</span> <span class="n">occurred</span> <span class="k">while</span> <span class="n">attempting</span> <span class="n">to</span> <span class="n">login</span> <span class="n">via</span> <span class="n">your</span> <span class="n">social</span> <span class="n">network</span> <span class="n">account</span><span class="o">.</span>
</pre></div>
</div>
<p>Use a callback URL of the form:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">accounts</span><span class="o">/</span><span class="n">twitter</span><span class="o">/</span><span class="n">login</span><span class="o">/</span><span class="n">callback</span><span class="o">/</span>
<span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">accounts</span><span class="o">/</span><span class="n">soundcloud</span><span class="o">/</span><span class="n">login</span><span class="o">/</span><span class="n">callback</span><span class="o">/</span>
<span class="o">...</span>
</pre></div>
</div>
<p>For local development, use the following:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">:</span><span class="mi">8000</span><span class="o">/</span><span class="n">accounts</span><span class="o">/</span><span class="n">twitter</span><span class="o">/</span><span class="n">login</span><span class="o">/</span><span class="n">callback</span><span class="o">/</span>
</pre></div>
</div>
<div class="section" id="andme">
<h2>23andMe<a class="headerlink" href="#andme" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://api.23andme.com/dev/">https://api.23andme.com/dev/</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/23andme/login/callback/">http://localhost:8000/accounts/23andme/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="px">
<h2>500px<a class="headerlink" href="#px" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://500px.com/settings/applications">https://500px.com/settings/applications</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/500px/login/callback/">http://localhost:8000/accounts/500px/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="amazon">
<h2>Amazon<a class="headerlink" href="#amazon" title="Permalink to this headline"></a></h2>
<p>Amazon requires secure OAuth callback URLs (<code class="docutils literal"><span class="pre">redirect_uri</span></code>), please
see the section on HTTPS about how this is handled.</p>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="http://login.amazon.com/manageApps">http://login.amazon.com/manageApps</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="https://example.com/accounts/amazon/login/callback/">https://example.com/accounts/amazon/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="angellist">
<h2>AngelList<a class="headerlink" href="#angellist" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://angel.co/api/oauth/clients">https://angel.co/api/oauth/clients</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/angellist/login/callback/">http://localhost:8000/accounts/angellist/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="auth0">
<h2>Auth0<a class="headerlink" href="#auth0" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://manage.auth0.com/#/clients">https://manage.auth0.com/#/clients</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/auth0/login/callback/">http://localhost:8000/accounts/auth0/login/callback/</a></dd>
</dl>
<p>You’ll need to specify the base URL for your Auth0 domain:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;auth0&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;AUTH0_URL&#39;</span><span class="p">:</span> <span class="s1">&#39;https://your.auth0domain.auth0.com&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="authentiq">
<h2>Authentiq<a class="headerlink" href="#authentiq" title="Permalink to this headline"></a></h2>
<p>Browse to <a class="reference external" href="https://www.authentiq.com/developers">https://www.authentiq.com/developers</a> to get started.</p>
<dl class="docutils">
<dt>App registration</dt>
<dd><a class="reference external" href="https://dashboard.authentiq.com/">https://dashboard.authentiq.com/</a></dd>
</dl>
<p>Sign in or register with your Authentiq ID (select <code class="docutils literal"><span class="pre">Download</span> <span class="pre">the</span> <span class="pre">app</span></code> while signing in if you don’t have Authentiq ID yet).</p>
<dl class="docutils">
<dt>Development redirect URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/authentiq/login/callback/">http://localhost:8000/accounts/authentiq/login/callback/</a></dd>
</dl>
<p>While testing you can leave the <code class="docutils literal"><span class="pre">Redirect</span> <span class="pre">URIs</span></code> field empty in the dashboard. You can specify what identity details to request via the <code class="docutils literal"><span class="pre">SCOPE</span></code> parameter.</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;authentiq&#39;</span><span class="p">:</span> <span class="p">{</span>
      <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;email&#39;</span><span class="p">,</span> <span class="s1">&#39;aq:name&#39;</span><span class="p">]</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Valid scopes include: <code class="docutils literal"><span class="pre">email</span></code>, <code class="docutils literal"><span class="pre">phone</span></code>, <code class="docutils literal"><span class="pre">address</span></code>, <code class="docutils literal"><span class="pre">aq:name</span></code>, <code class="docutils literal"><span class="pre">aq:location</span></code>. The default is to request a user’s name, and email address if <code class="docutils literal"><span class="pre">SOCIALACCOUNT_QUERY_EMAIL=True</span></code>. You can request and require a verified email address by setting <code class="docutils literal"><span class="pre">SOCIALACCOUNT_EMAIL_VERIFICATION=True</span></code> and <code class="docutils literal"><span class="pre">SOCIALACCOUNT_EMAIL_REQUIRED=True</span></code>.</p>
</div>
<div class="section" id="baidu">
<h2>Baidu<a class="headerlink" href="#baidu" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>The Baidu OAuth2 authentication documentation:</dt>
<dd><a class="reference external" href="http://developer.baidu.com/wiki/index.php?title=docs/oauth/refresh">http://developer.baidu.com/wiki/index.php?title=docs/oauth/refresh</a>
<a class="reference external" href="http://developer.baidu.com/wiki/index.php?title=docs/oauth/rest/file_data_apis_lista">http://developer.baidu.com/wiki/index.php?title=docs/oauth/rest/file_data_apis_lista</a></dd>
</dl>
</div>
<div class="section" id="basecamp">
<h2>Basecamp<a class="headerlink" href="#basecamp" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://integrate.37signals.com/">https://integrate.37signals.com/</a></dd>
<dt>The Basecamp OAuth2 authentication documentation</dt>
<dd><a class="reference external" href="https://github.com/basecamp/api/blob/master/sections/authentication.md#oauth-2">https://github.com/basecamp/api/blob/master/sections/authentication.md#oauth-2</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="https://localhost:8000/accounts/basecamp/login/callback/">https://localhost:8000/accounts/basecamp/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="battle-net">
<h2>Battle.net<a class="headerlink" href="#battle-net" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>The Battle.net OAuth2 authentication documentation</dt>
<dd><a class="reference external" href="https://dev.battle.net/docs/read/oauth">https://dev.battle.net/docs/read/oauth</a></dd>
<dt>Register your app here (Mashery account required)</dt>
<dd><a class="reference external" href="https://dev.battle.net/apps/register">https://dev.battle.net/apps/register</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="https://localhost:8000/accounts/battlenet/login/callback/">https://localhost:8000/accounts/battlenet/login/callback/</a></dd>
</dl>
<p>Note that in order to use battletags as usernames, you are expected to override
either the <code class="docutils literal"><span class="pre">username</span></code> field on your User model, or to pass a custom validator
which will accept the <code class="docutils literal"><span class="pre">#</span></code> character using the <code class="docutils literal"><span class="pre">ACCOUNT_USERNAME_VALIDATORS</span></code>
setting. Such a validator is available in
<code class="docutils literal"><span class="pre">socialaccount.providers.battlenet.validators.BattletagUsernameValidator</span></code>.</p>
</div>
<div class="section" id="bitbucket">
<h2>Bitbucket<a class="headerlink" href="#bitbucket" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://bitbucket.org/account/user">https://bitbucket.org/account/user</a>/{{yourusername}}/oauth-consumers/new</dd>
</dl>
<p>Make sure you select the Account:Read permission.</p>
<dl class="docutils">
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://127.0.0.1:8000/accounts/bitbucket_oauth2/login/callback/">http://127.0.0.1:8000/accounts/bitbucket_oauth2/login/callback/</a></dd>
</dl>
<p>Note that Bitbucket calls the <code class="docutils literal"><span class="pre">client_id</span></code> <em>Key</em> in their user interface.
Don’t get confused by that; use the <em>Key</em> value for your <code class="docutils literal"><span class="pre">client_id</span></code> field.</p>
</div>
<div class="section" id="box">
<h2>Box<a class="headerlink" href="#box" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://app.box.com/developers/services/edit/">https://app.box.com/developers/services/edit/</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/box/login/callback/">http://localhost:8000/accounts/box/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="dataporten">
<h2>Dataporten<a class="headerlink" href="#dataporten" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://docs.dataporten.no/docs/gettingstarted/">https://docs.dataporten.no/docs/gettingstarted/</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/dataporten/login/callback">http://localhost:8000/accounts/dataporten/login/callback</a></dd>
</dl>
</div>
<div class="section" id="daum">
<h2>daum<a class="headerlink" href="#daum" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://developers.daum.net/console">https://developers.daum.net/console</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://127.0.0.1:8000/accounts/daum/login/callback/">http://127.0.0.1:8000/accounts/daum/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="digitalocean">
<h2>DigitalOcean<a class="headerlink" href="#digitalocean" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://cloud.digitalocean.com/settings/applications">https://cloud.digitalocean.com/settings/applications</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://127.0.0.1:8000/accounts/digitalocean/login/callback/">http://127.0.0.1:8000/accounts/digitalocean/login/callback/</a></dd>
</dl>
<p>With the acquired access token you will have read permissions on the API by
default.  If you also need write access specify the scope as follows.  See
<a class="reference external" href="https://developers.digitalocean.com/documentation/oauth/#scopes">https://developers.digitalocean.com/documentation/oauth/#scopes</a> for details.</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;digitalocean&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="s1">&#39;read write&#39;</span><span class="p">,</span>
        <span class="p">],</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="discord">
<h2>Discord<a class="headerlink" href="#discord" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration and management (get your key and secret here)</dt>
<dd><a class="reference external" href="https://discordapp.com/developers/applications/me">https://discordapp.com/developers/applications/me</a></dd>
</dl>
<p>Make sure to Add Redirect URI to your application.</p>
<dl class="docutils">
<dt>Development callback (redirect) URL</dt>
<dd><a class="reference external" href="http://127.0.0.1:8000/accounts/discord/login/callback/">http://127.0.0.1:8000/accounts/discord/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="doximity">
<h2>Doximity<a class="headerlink" href="#doximity" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>Doximity OAuth2 implementation documentation</dt>
<dd><a class="reference external" href="https://www.doximity.com/developers/documentation#oauth">https://www.doximity.com/developers/documentation#oauth</a></dd>
<dt>Request API keys here</dt>
<dd><a class="reference external" href="https://www.doximity.com/developers/api_signup">https://www.doximity.com/developers/api_signup</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/doximity/login/callback/">http://localhost:8000/accounts/doximity/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="draugiem">
<h2>Draugiem<a class="headerlink" href="#draugiem" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://www.draugiem.lv/applications/dev/create/?type=4">https://www.draugiem.lv/applications/dev/create/?type=4</a></dd>
<dt>Authentication documentation</dt>
<dd><a class="reference external" href="https://www.draugiem.lv/applications/dev/docs/passport/">https://www.draugiem.lv/applications/dev/docs/passport/</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/draugiem/login/callback/">http://localhost:8000/accounts/draugiem/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="dropbox">
<h2>Dropbox<a class="headerlink" href="#dropbox" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://www.dropbox.com/developers/apps/">https://www.dropbox.com/developers/apps/</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/dropbox/login/callback/">http://localhost:8000/accounts/dropbox/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="dwolla">
<h2>Dwolla<a class="headerlink" href="#dwolla" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://dashboard-uat.dwolla.com/applications">https://dashboard-uat.dwolla.com/applications</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://127.0.0.1:8000/accounts/dwolla/login/callback/">http://127.0.0.1:8000/accounts/dwolla/login/callback/</a></dd>
</dl>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;dwolla&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="s1">&#39;Send&#39;</span><span class="p">,</span>
            <span class="s1">&#39;Transactions&#39;</span><span class="p">,</span>
            <span class="s1">&#39;Funding&#39;</span><span class="p">,</span>
            <span class="s1">&#39;AccountInfoFull&#39;</span><span class="p">,</span>
        <span class="p">],</span>
        <span class="s1">&#39;ENVIROMENT&#39;</span><span class="p">:</span><span class="s1">&#39;sandbox&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="id1">
<h2>Dwolla<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://dashboard-uat.dwolla.com/applications">https://dashboard-uat.dwolla.com/applications</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://127.0.0.1:8000/accounts/dwolla/login/callback/">http://127.0.0.1:8000/accounts/dwolla/login/callback/</a></dd>
</dl>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;dwolla&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="s1">&#39;Send&#39;</span><span class="p">,</span>
            <span class="s1">&#39;Transactions&#39;</span><span class="p">,</span>
            <span class="s1">&#39;Funding&#39;</span><span class="p">,</span>
            <span class="s1">&#39;AccountInfoFull&#39;</span><span class="p">,</span>
        <span class="p">],</span>
        <span class="s1">&#39;ENVIROMENT&#39;</span><span class="p">:</span><span class="s1">&#39;sandbox&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="edmodo">
<h2>Edmodo<a class="headerlink" href="#edmodo" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>Edmodo OAuth2 documentation</dt>
<dd><a class="reference external" href="https://developers.edmodo.com/edmodo-connect/edmodo-connect-overview-getting-started/">https://developers.edmodo.com/edmodo-connect/edmodo-connect-overview-getting-started/</a></dd>
</dl>
<p>You can optionally specify additional permissions to use. If no <code class="docutils literal"><span class="pre">SCOPE</span></code>
value is set, the Edmodo provider will use <code class="docutils literal"><span class="pre">basic</span></code> by default:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;edmodo&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="s1">&#39;basic&#39;</span><span class="p">,</span>
            <span class="s1">&#39;read_groups&#39;</span><span class="p">,</span>
            <span class="s1">&#39;read_connections&#39;</span><span class="p">,</span>
            <span class="s1">&#39;read_user_email&#39;</span><span class="p">,</span>
            <span class="s1">&#39;create_messages&#39;</span><span class="p">,</span>
            <span class="s1">&#39;write_library_items&#39;</span><span class="p">,</span>
        <span class="p">]</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="eve-online">
<h2>Eve Online<a class="headerlink" href="#eve-online" title="Permalink to this headline"></a></h2>
<p>Register your application at <code class="docutils literal"><span class="pre">https://developers.eveonline.com/applications/create</span></code>.
Note that if you have <code class="docutils literal"><span class="pre">STORE_TOKENS</span></code> enabled (the default), you will need to
set up your application to be able to request an OAuth scope. This means you
will need to set it as having “CREST Access”. The least obtrusive scope is
“publicData”.</p>
</div>
<div class="section" id="eventbrite">
<h2>Eventbrite<a class="headerlink" href="#eventbrite" title="Permalink to this headline"></a></h2>
<p>Log in and click your profile name in the top right navigation, then select
<code class="docutils literal"><span class="pre">Account</span> <span class="pre">Settings</span></code>. Choose <code class="docutils literal"><span class="pre">App</span> <span class="pre">Management</span></code> near the bottom of the left
navigation column. You can then click <code class="docutils literal"><span class="pre">Create</span> <span class="pre">A</span> <span class="pre">New</span> <span class="pre">App</span></code> on the upper left
corner.</p>
<dl class="docutils">
<dt>App registration</dt>
<dd><a class="reference external" href="https://www.eventbrite.com/myaccount/apps/">https://www.eventbrite.com/myaccount/apps/</a></dd>
</dl>
<p>Fill in the form with the following link</p>
<dl class="docutils">
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://127.0.0.1:8000/accounts/eventbrite/login/callback/">http://127.0.0.1:8000/accounts/eventbrite/login/callback/</a></dd>
</dl>
<p>for both the <code class="docutils literal"><span class="pre">Application</span> <span class="pre">URL</span></code> and <code class="docutils literal"><span class="pre">OAuth</span> <span class="pre">Redirect</span> <span class="pre">URI</span></code>.</p>
</div>
<div class="section" id="evernote">
<h2>Evernote<a class="headerlink" href="#evernote" title="Permalink to this headline"></a></h2>
<p>Register your OAuth2 application at <code class="docutils literal"><span class="pre">https://dev.evernote.com/doc/articles/authentication.php</span></code>:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;evernote&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;EVERNOTE_HOSTNAME&#39;</span><span class="p">:</span> <span class="s1">&#39;evernote.com&#39;</span>  <span class="c1"># defaults to sandbox.evernote.com</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="facebook">
<h2>Facebook<a class="headerlink" href="#facebook" title="Permalink to this headline"></a></h2>
<p>For Facebook both OAuth2 and the Facebook Connect Javascript SDK are
supported. You can even mix the two.</p>
<p>An advantage of the Javascript SDK may be a more streamlined user
experience as you do not leave your site. Furthermore, you do not need
to worry about tailoring the login dialog depending on whether or not
you are using a mobile device. Yet, relying on Javascript may not be
everybody’s cup of tea.</p>
<p>To initiate a login use:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="n">load</span> <span class="n">socialaccount</span> <span class="o">%</span><span class="p">}</span>
<span class="p">{</span><span class="o">%</span> <span class="n">providers_media_js</span> <span class="o">%</span><span class="p">}</span>
<span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;{% provider_login_url &quot;</span><span class="n">facebook</span><span class="s2">&quot; method=&quot;</span><span class="n">js_sdk</span><span class="s2">&quot; %}&quot;</span><span class="o">&gt;</span><span class="n">Facebook</span> <span class="n">Connect</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span>
</pre></div>
</div>
<p>or:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="n">load</span> <span class="n">socialaccount</span> <span class="o">%</span><span class="p">}</span>
<span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;{% provider_login_url &quot;</span><span class="n">facebook</span><span class="s2">&quot; method=&quot;</span><span class="n">oauth2</span><span class="s2">&quot; %}&quot;</span><span class="o">&gt;</span><span class="n">Facebook</span> <span class="n">OAuth2</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span>
</pre></div>
</div>
<p>The following Facebook settings are available:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;facebook&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;METHOD&#39;</span><span class="p">:</span> <span class="s1">&#39;oauth2&#39;</span><span class="p">,</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;email&#39;</span><span class="p">,</span> <span class="s1">&#39;public_profile&#39;</span><span class="p">,</span> <span class="s1">&#39;user_friends&#39;</span><span class="p">],</span>
        <span class="s1">&#39;AUTH_PARAMS&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;auth_type&#39;</span><span class="p">:</span> <span class="s1">&#39;reauthenticate&#39;</span><span class="p">},</span>
        <span class="s1">&#39;INIT_PARAMS&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;cookie&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">},</span>
        <span class="s1">&#39;FIELDS&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="s1">&#39;id&#39;</span><span class="p">,</span>
            <span class="s1">&#39;email&#39;</span><span class="p">,</span>
            <span class="s1">&#39;name&#39;</span><span class="p">,</span>
            <span class="s1">&#39;first_name&#39;</span><span class="p">,</span>
            <span class="s1">&#39;last_name&#39;</span><span class="p">,</span>
            <span class="s1">&#39;verified&#39;</span><span class="p">,</span>
            <span class="s1">&#39;locale&#39;</span><span class="p">,</span>
            <span class="s1">&#39;timezone&#39;</span><span class="p">,</span>
            <span class="s1">&#39;link&#39;</span><span class="p">,</span>
            <span class="s1">&#39;gender&#39;</span><span class="p">,</span>
            <span class="s1">&#39;updated_time&#39;</span><span class="p">,</span>
        <span class="p">],</span>
        <span class="s1">&#39;EXCHANGE_TOKEN&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
        <span class="s1">&#39;LOCALE_FUNC&#39;</span><span class="p">:</span> <span class="s1">&#39;path.to.callable&#39;</span><span class="p">,</span>
        <span class="s1">&#39;VERIFIED_EMAIL&#39;</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
        <span class="s1">&#39;VERSION&#39;</span><span class="p">:</span> <span class="s1">&#39;v2.5&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<dl class="docutils">
<dt>METHOD:</dt>
<dd>Either <code class="docutils literal"><span class="pre">js_sdk</span></code> or <code class="docutils literal"><span class="pre">oauth2</span></code>. The default is <code class="docutils literal"><span class="pre">oauth2</span></code>.</dd>
<dt>SCOPE:</dt>
<dd>By default, the <code class="docutils literal"><span class="pre">email</span></code> scope is required depending on whether or not
<code class="docutils literal"><span class="pre">SOCIALACCOUNT_QUERY_EMAIL</span></code> is enabled.
Apps using permissions beyond <code class="docutils literal"><span class="pre">email</span></code>, <code class="docutils literal"><span class="pre">public_profile</span></code> and <code class="docutils literal"><span class="pre">user_friends</span></code>
require review by Facebook.
See <a class="reference external" href="https://developers.facebook.com/docs/facebook-login/permissions">Permissions with Facebook Login</a>
for more information.</dd>
<dt>AUTH_PARAMS:</dt>
<dd>Use <code class="docutils literal"><span class="pre">AUTH_PARAMS</span></code> to pass along other parameters to the <code class="docutils literal"><span class="pre">FB.login</span></code>
JS SDK call.</dd>
<dt>FIELDS:</dt>
<dd>The fields to fetch from the Graph API <code class="docutils literal"><span class="pre">/me/?fields=</span></code> endpoint.
For example, you could add the <code class="docutils literal"><span class="pre">'friends'</span></code> field in order to
capture the user’s friends that have also logged into your app using
Facebook (requires <code class="docutils literal"><span class="pre">'user_friends'</span></code> scope).</dd>
<dt>EXCHANGE_TOKEN:</dt>
<dd>The JS SDK returns a short-lived token suitable for client-side use. Set
<code class="docutils literal"><span class="pre">EXCHANGE_TOKEN</span> <span class="pre">=</span> <span class="pre">True</span></code> to make a server-side request to upgrade to a
long-lived token before storing in the <code class="docutils literal"><span class="pre">SocialToken</span></code> record. See
<a class="reference external" href="https://developers.facebook.com/docs/facebook-login/access-tokens#extending">Expiration and Extending Tokens</a>.</dd>
<dt>LOCALE_FUNC:</dt>
<dd><p class="first">The locale for the JS SDK is chosen based on the current active language of
the request, taking a best guess. This can be customized using the
<code class="docutils literal"><span class="pre">LOCALE_FUNC</span></code> setting, which takes either a callable or a path to a callable.
This callable must take exactly one argument, the request, and return <a class="reference external" href="http://developers.facebook.com/docs/internationalization/">a
valid Facebook locale</a> as a string, e.g. US English:</p>
<div class="last highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;facebook&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;LOCALE_FUNC&#39;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">request</span><span class="p">:</span> <span class="s1">&#39;en_US&#39;</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</dd>
<dt>VERIFIED_EMAIL:</dt>
<dd>It is not clear from the Facebook documentation whether or not the fact
that the account is verified implies that the e-mail address is verified
as well. For example, verification could also be done by phone or credit
card. To be on the safe side, the default is to treat e-mail addresses
from Facebook as unverified. But, if you feel that is too paranoid, then
use this setting to mark them as verified. Due to lack of an official
statement from the side of Facebook, attempts have been made to
<a class="reference external" href="https://stackoverflow.com/questions/14280535/is-it-possible-to-check-if-an-email-is-confirmed-on-facebook">reverse engineer the meaning of the verified flag</a>.
Do know that by setting this to <code class="docutils literal"><span class="pre">True</span></code> you may be introducing a security
risk.</dd>
<dt>VERSION:</dt>
<dd>The Facebook Graph API version to use. The default is <code class="docutils literal"><span class="pre">v2.5</span></code>.</dd>
<dt>App registration (get your key and secret here)</dt>
<dd>A key and secret key can be obtained by
<a class="reference external" href="https://developers.facebook.com/apps">creating an app</a>.
After registration you will need to make it available to the public.
In order to do that your app first has to be
<a class="reference external" href="https://developers.facebook.com/docs/apps/review">reviewed by Facebook</a>.</dd>
<dt>Development callback URL</dt>
<dd>Leave your App Domains empty and put <code class="docutils literal"><span class="pre">http://localhost:8000</span></code> in the
section labeled <code class="docutils literal"><span class="pre">Website</span> <span class="pre">with</span> <span class="pre">Facebook</span> <span class="pre">Login</span></code>. Note that you’ll need to
add your site’s actual domain to this section once it goes live.</dd>
</dl>
</div>
<div class="section" id="firefox-accounts">
<h2>Firefox Accounts<a class="headerlink" href="#firefox-accounts" title="Permalink to this headline"></a></h2>
<p>The Firefox Accounts provider is currently limited to Mozilla relying services
but there is the intention, in the future, to allow third-party services to
delegate authentication. There is no committed timeline for this.</p>
<dl class="docutils">
<dt>The provider is OAuth2 based. More info:</dt>
<dd><a class="reference external" href="https://developer.mozilla.org/en-US/Firefox_Accounts">https://developer.mozilla.org/en-US/Firefox_Accounts</a></dd>
</dl>
<p>Note: This is not the same as the Mozilla Persona provider below.</p>
<p>The following Firefox Accounts settings are available:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;fxa&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;profile&#39;</span><span class="p">],</span>
        <span class="s1">&#39;OAUTH_ENDPOINT&#39;</span><span class="p">:</span> <span class="s1">&#39;https://oauth.accounts.firefox.com/v1&#39;</span><span class="p">,</span>
        <span class="s1">&#39;PROFILE_ENDPOINT&#39;</span><span class="p">:</span> <span class="s1">&#39;https://profile.accounts.firefox.com/v1&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<dl class="docutils">
<dt>SCOPE:</dt>
<dd>Requested OAuth2 scope. Default is [‘profile’], which will work for
applications on the Mozilla trusted whitelist. If your application is not
on the whitelist, then define SCOPE to be [‘profile:email’, ‘profile:uid’].</dd>
<dt>OAUTH_ENDPOINT:</dt>
<dd>Explicitly set the OAuth2 endpoint. Default is the production endpoint
“<a class="reference external" href="https://oauth.accounts.firefox.com/v1">https://oauth.accounts.firefox.com/v1</a>”.</dd>
<dt>PROFILE_ENDPOINT:</dt>
<dd>Explicitly set the profile endpoint. Default is the production endpoint
and is “<a class="reference external" href="https://profile.accounts.firefox.com/v1">https://profile.accounts.firefox.com/v1</a>”.</dd>
</dl>
</div>
<div class="section" id="flickr">
<h2>Flickr<a class="headerlink" href="#flickr" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://www.flickr.com/services/apps/create/">https://www.flickr.com/services/apps/create/</a></dd>
</dl>
<p>You can optionally specify the application permissions to use. If no <code class="docutils literal"><span class="pre">perms</span></code>
value is set, the Flickr provider will use <code class="docutils literal"><span class="pre">read</span></code> by default.</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;flickr&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;AUTH_PARAMS&#39;</span><span class="p">:</span> <span class="p">{</span>
            <span class="s1">&#39;perms&#39;</span><span class="p">:</span> <span class="s1">&#39;write&#39;</span><span class="p">,</span>
        <span class="p">}</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<dl class="docutils">
<dt>More info:</dt>
<dd><a class="reference external" href="https://www.flickr.com/services/api/auth.oauth.html#authorization">https://www.flickr.com/services/api/auth.oauth.html#authorization</a></dd>
</dl>
</div>
<div class="section" id="github">
<h2>GitHub<a class="headerlink" href="#github" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://github.com/settings/applications/new">https://github.com/settings/applications/new</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://127.0.0.1:8000/accounts/github/login/callback/">http://127.0.0.1:8000/accounts/github/login/callback/</a></dd>
</dl>
<p>If you want more than just read-only access to public data, specify the scope
as follows. See <a class="reference external" href="https://developer.github.com/v3/oauth/#scopes">https://developer.github.com/v3/oauth/#scopes</a> for details.</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;github&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="s1">&#39;user&#39;</span><span class="p">,</span>
            <span class="s1">&#39;repo&#39;</span><span class="p">,</span>
            <span class="s1">&#39;read:org&#39;</span><span class="p">,</span>
        <span class="p">],</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="section" id="enterprise-support">
<h3>Enterprise Support<a class="headerlink" href="#enterprise-support" title="Permalink to this headline"></a></h3>
<p>If you use GitHub Enterprise add your server URL to your Django settings as
follows:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;github&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;GITHUB_URL&#39;</span><span class="p">:</span> <span class="s1">&#39;https://your.github-server.domain&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="gitlab">
<h2>GitLab<a class="headerlink" href="#gitlab" title="Permalink to this headline"></a></h2>
<p>The GitLab provider works by default with <a class="reference external" href="https://gitlab.com">https://gitlab.com</a>. It allows you
to connect to your private GitLab server and use GitLab as an OAuth2
authentication provider as described in GitLab docs at
<a class="reference external" href="http://doc.gitlab.com/ce/integration/oauth_provider.html">http://doc.gitlab.com/ce/integration/oauth_provider.html</a></p>
<p>The following GitLab settings are available, if unset <a class="reference external" href="https://gitlab.com">https://gitlab.com</a> will
be used.</p>
<dl class="docutils">
<dt>GITLAB_URL:</dt>
<dd>Override endpoint to request an authorization and access token. For your
private GitLab server you use: <code class="docutils literal"><span class="pre">https://your.gitlab.server.tld</span></code></dd>
<dt>SCOPE:</dt>
<dd>The <code class="docutils literal"><span class="pre">read_user</span></code> scope is required for the login procedure.</dd>
</dl>
<p>Example:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;gitlab&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;GITLAB_URL&#39;</span><span class="p">:</span> <span class="s1">&#39;https://your.gitlab.server.tld&#39;</span><span class="p">,</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;read_user&#39;</span><span class="p">],</span>
    <span class="p">},</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="google">
<h2>Google<a class="headerlink" href="#google" title="Permalink to this headline"></a></h2>
<p>The Google provider is OAuth2 based.</p>
<dl class="docutils">
<dt>More info:</dt>
<dd><a class="reference external" href="http://code.google.com/apis/accounts/docs/OAuth2.html#Registering">http://code.google.com/apis/accounts/docs/OAuth2.html#Registering</a></dd>
</dl>
<div class="section" id="app-registration">
<h3>App registration<a class="headerlink" href="#app-registration" title="Permalink to this headline"></a></h3>
<p>Create a google app to obtain a key and secret through the developer console.</p>
<dl class="docutils">
<dt>Google Developer Console</dt>
<dd><a class="reference external" href="https://console.developers.google.com/">https://console.developers.google.com/</a></dd>
</dl>
<p>After you create a project you will have to create a “Client ID” and fill in
some project details for the consent form that will be presented to the client.</p>
<p>Under “APIs &amp; auth” go to “Credentials” and create a new Client ID. Probably
you will want a “Web application” Client ID. Provide your domain name or test
domain name in “Authorized JavaScript origins”. Finally fill in
<code class="docutils literal"><span class="pre">http://127.0.0.1:8000/accounts/google/login/callback/</span></code> in the
“Authorized redirect URI” field. You can fill multiple URLs, one for each test
domain. After creating the Client ID you will find all details for the Django
configuration on this page.</p>
<p>Users that login using the app will be presented a consent form. For this to
work additional information is required. Under “APIs &amp; auth” go to
“Consent screen” and at least provide an email and product name.</p>
</div>
<div class="section" id="django-configuration">
<h3>Django configuration<a class="headerlink" href="#django-configuration" title="Permalink to this headline"></a></h3>
<p>The app credentials are configured for your Django installation via the admin
interface. Create a new socialapp through <code class="docutils literal"><span class="pre">/admin/socialaccount/socialapp/</span></code>.</p>
<p>Fill in the form as follows:</p>
<ul class="simple">
<li>Provider, “Google”</li>
<li>Name, your pick, suggest “Google”</li>
<li>Client id, is called “Client ID” by Google</li>
<li>Secret key, is called “Client secret” by Google</li>
<li>Key, is not needed, leave blank.</li>
</ul>
<p>Optionally, you can specify the scope to use as follows:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;google&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="s1">&#39;profile&#39;</span><span class="p">,</span>
            <span class="s1">&#39;email&#39;</span><span class="p">,</span>
        <span class="p">],</span>
        <span class="s1">&#39;AUTH_PARAMS&#39;</span><span class="p">:</span> <span class="p">{</span>
            <span class="s1">&#39;access_type&#39;</span><span class="p">:</span> <span class="s1">&#39;online&#39;</span><span class="p">,</span>
        <span class="p">}</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>By default, <code class="docutils literal"><span class="pre">profile</span></code> scope is required, and optionally <code class="docutils literal"><span class="pre">email</span></code> scope
depending on whether or not <code class="docutils literal"><span class="pre">SOCIALACCOUNT_QUERY_EMAIL</span></code> is enabled.</p>
</div>
</div>
<div class="section" id="instagram">
<h2>Instagram<a class="headerlink" href="#instagram" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://www.instagram.com/developer/clients/manage/">https://www.instagram.com/developer/clients/manage/</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/instagram/login/callback/">http://localhost:8000/accounts/instagram/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="kakao">
<h2>Kakao<a class="headerlink" href="#kakao" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key here)</dt>
<dd><a class="reference external" href="https://developers.kakao.com/apps">https://developers.kakao.com/apps</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/kakao/login/callback/">http://localhost:8000/accounts/kakao/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="line">
<h2>Line<a class="headerlink" href="#line" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://business.line.me">https://business.line.me</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://127.0.0.1:8000/accounts/line/login/callback/">http://127.0.0.1:8000/accounts/line/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="linkedin">
<h2>LinkedIn<a class="headerlink" href="#linkedin" title="Permalink to this headline"></a></h2>
<p>The LinkedIn provider comes in two flavors: OAuth 1.0
(<code class="docutils literal"><span class="pre">allauth.socialaccount.providers.linkedin</span></code>) and OAuth 2.0
(<code class="docutils literal"><span class="pre">allauth.socialaccount.providers.linkedin_oauth2</span></code>).</p>
<p>You can specify the scope and fields to fetch as follows:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;linkedin&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="s1">&#39;r_emailaddress&#39;</span><span class="p">,</span>
        <span class="p">],</span>
        <span class="s1">&#39;PROFILE_FIELDS&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="s1">&#39;id&#39;</span><span class="p">,</span>
            <span class="s1">&#39;first-name&#39;</span><span class="p">,</span>
            <span class="s1">&#39;last-name&#39;</span><span class="p">,</span>
            <span class="s1">&#39;email-address&#39;</span><span class="p">,</span>
            <span class="s1">&#39;picture-url&#39;</span><span class="p">,</span>
            <span class="s1">&#39;public-profile-url&#39;</span><span class="p">,</span>
        <span class="p">]</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>By default, <code class="docutils literal"><span class="pre">r_emailaddress</span></code> scope is required depending on whether or
not <code class="docutils literal"><span class="pre">SOCIALACCOUNT_QUERY_EMAIL</span></code> is enabled.</p>
<p>Note: if you are experiencing issues where it seems as if the scope has no
effect you may be using an old LinkedIn app that is not scope enabled.
Please refer to
<code class="docutils literal"><span class="pre">https://developer.linkedin.com/forum/when-will-old-apps-have-scope-parameter-enabled</span></code>
for more background information.</p>
<p>Furthermore, we have experienced trouble upgrading from OAuth 1.0 to OAuth 2.0
using the same app. Attempting to do so resulted in a weird error message when
fetching the access token:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">missing</span> <span class="n">required</span> <span class="n">parameters</span><span class="p">,</span> <span class="n">includes</span> <span class="n">an</span> <span class="n">invalid</span> <span class="n">parameter</span> <span class="n">value</span><span class="p">,</span> <span class="n">parameter</span> <span class="n">more</span> <span class="n">then</span> <span class="n">once</span><span class="o">.</span> <span class="p">:</span> <span class="n">Unable</span> <span class="n">to</span> <span class="n">retrieve</span> <span class="n">access</span> <span class="n">token</span> <span class="p">:</span> <span class="n">authorization</span> <span class="n">code</span> <span class="ow">not</span> <span class="n">found</span>
</pre></div>
</div>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://www.linkedin.com/secure/developer?newapp=">https://www.linkedin.com/secure/developer?newapp=</a></dd>
</dl>
<div class="section" id="authorized-redirect-urls-oauth2">
<h3>Authorized Redirect URLs (OAuth2)<a class="headerlink" href="#authorized-redirect-urls-oauth2" title="Permalink to this headline"></a></h3>
<p>Add any you need (up to 200) consisting of:</p>
<blockquote>
<div>{<code class="docutils literal"><span class="pre">ACCOUNT_DEFAULT_HTTP_PROTOCOL</span></code>}://{hostname}{:optional_port}/{allauth_base_url}/linkedin_oauth2/login/callback/</div></blockquote>
<p>For example when using the built-in django server and default settings:</p>
<blockquote>
<div><a class="reference external" href="http://localhost:8000/accounts/linkedin_oauth2/login/callback/">http://localhost:8000/accounts/linkedin_oauth2/login/callback/</a></div></blockquote>
</div>
<div class="section" id="development-accept-and-cancel-redirect-url-oauth-1-0a">
<h3>Development “Accept” and “Cancel” redirect URL (OAuth 1.0a)<a class="headerlink" href="#development-accept-and-cancel-redirect-url-oauth-1-0a" title="Permalink to this headline"></a></h3>
<blockquote>
<div>Leave the OAuth1 redirect URLs empty.</div></blockquote>
</div>
</div>
<div class="section" id="mailchimp-oauth2">
<h2>MailChimp (OAuth2)<a class="headerlink" href="#mailchimp-oauth2" title="Permalink to this headline"></a></h2>
<p>MailChimp has a simple API for working with your own data and a <a class="reference external" href="https://pypi.python.org/pypi/mailchimp3">good library</a>
already exists for this use. However, to allow other MailChimp users to use an
app you develop, the OAuth2 API allows those users to give or revoke access
without creating a key themselves.</p>
<div class="section" id="registering-a-new-app">
<h3>Registering a new app<a class="headerlink" href="#registering-a-new-app" title="Permalink to this headline"></a></h3>
<p>Instructions for generating your own OAuth2 app can be found at
<a class="reference external" href="https://developer.mailchimp.com/documentation/mailchimp/guides/how-to-use-oauth2/">https://developer.mailchimp.com/documentation/mailchimp/guides/how-to-use-oauth2/</a>.
It is worth reading that carefully before following the instructions below.</p>
<p>Login via <a class="reference external" href="https://login.mailchimp.com/">https://login.mailchimp.com/</a>, which will redirect you to
<code class="docutils literal"><span class="pre">https://usX.admin.mailchimp.com/</span></code> where the prefix <code class="docutils literal"><span class="pre">usX</span></code> (<code class="docutils literal"><span class="pre">X</span></code> is an
integer) is the subdomain you need to connect to. Click on your username in the
top right corner and select <em>Profile</em>. On the next page select <em>Extras</em> then
click API keys, which should lead you to:</p>
<dl class="docutils">
<dt>App registration (where <code class="docutils literal"><span class="pre">X</span></code> is dependent on your account)</dt>
<dd><a class="reference external" href="https://usX.admin.mailchimp.com/account/oauth2/">https://usX.admin.mailchimp.com/account/oauth2/</a></dd>
</dl>
<p>Fill in the form with the following URL for local development:</p>
<dl class="docutils">
<dt>Development callback URL</dt>
<dd><a class="reference external" href="https://127.0.0.1:8000/accounts/mailchimp/login/callback/">https://127.0.0.1:8000/accounts/mailchimp/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="testing-locally">
<h3>Testing Locally<a class="headerlink" href="#testing-locally" title="Permalink to this headline"></a></h3>
<p>Note the requirement of <strong>https</strong>. If you would like to test OAuth2
authentication locally before deploying a default django project will raise
errors because development mode does not support <code class="docutils literal"><span class="pre">https</span></code>. One means of
circumventing this is to install <code class="docutils literal"><span class="pre">django-extensions</span></code>:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">django</span><span class="o">-</span><span class="n">extensions</span>
</pre></div>
</div>
<p>add it to your <code class="docutils literal"><span class="pre">INSTALLED_APPS</span></code></p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">INSTALLED_APPS</span> <span class="o">=</span> <span class="p">(</span>
    <span class="o">...</span>
    <span class="s1">&#39;django_extensions&#39;</span><span class="p">,</span>
    <span class="o">...</span>
<span class="p">)</span>
</pre></div>
</div>
<p>and then run:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">manage</span><span class="o">.</span><span class="n">py</span> <span class="n">runserver_plus</span> <span class="o">--</span><span class="n">cert</span> <span class="n">cert</span>
</pre></div>
</div>
<p>which should allow you to test locally via <a class="reference external" href="https://127.0.0.1:8000">https://127.0.0.1:8000</a>. Some
browsers may require enabling this on localhost and not support by default and
ask for permission.</p>
</div>
</div>
<div class="section" id="microsoft-graph">
<h2>Microsoft Graph<a class="headerlink" href="#microsoft-graph" title="Permalink to this headline"></a></h2>
<p>Microsoft Graph API is the gateway to connect to mail, calendar, contacts,
documents, directory, devices and more.</p>
<dl class="docutils">
<dt>Apps can be registered (for consumer key and secret) here</dt>
<dd><a class="reference external" href="https://apps.dev.microsoft.com/">https://apps.dev.microsoft.com/</a></dd>
</dl>
<p>By default, <cite>common</cite> (<cite>organizations</cite> and <cite>consumers</cite>) tenancy is configured
for the login. To restrict it, change the <cite>tenant</cite> setting as shown below.</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;microsoft&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;tenant&#39;</span><span class="p">:</span> <span class="s1">&#39;organizations&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="naver">
<h2>Naver<a class="headerlink" href="#naver" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://developers.naver.com/appinfo">https://developers.naver.com/appinfo</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/naver/login/callback/">http://localhost:8000/accounts/naver/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="odnoklassniki">
<h2>Odnoklassniki<a class="headerlink" href="#odnoklassniki" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="http://apiok.ru/wiki/pages/viewpage.action?pageId=42476486">http://apiok.ru/wiki/pages/viewpage.action?pageId=42476486</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://example.com/accounts/odnoklassniki/login/callback/">http://example.com/accounts/odnoklassniki/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="openid">
<h2>OpenID<a class="headerlink" href="#openid" title="Permalink to this headline"></a></h2>
<p>The OpenID provider does not require any settings per se. However, a typical
OpenID login page presents the user with a predefined list of OpenID providers
and allows the user to input their own OpenID identity URL in case their
provider is not listed by default. The list of providers displayed by the
builtin templates can be configured as follows:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;openid&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SERVERS&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="nb">dict</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="s1">&#39;yahoo&#39;</span><span class="p">,</span>
                 <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Yahoo&#39;</span><span class="p">,</span>
                 <span class="n">openid_url</span><span class="o">=</span><span class="s1">&#39;http://me.yahoo.com&#39;</span><span class="p">),</span>
            <span class="nb">dict</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="s1">&#39;hyves&#39;</span><span class="p">,</span>
                 <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Hyves&#39;</span><span class="p">,</span>
                 <span class="n">openid_url</span><span class="o">=</span><span class="s1">&#39;http://hyves.nl&#39;</span><span class="p">),</span>
            <span class="nb">dict</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="s1">&#39;google&#39;</span><span class="p">,</span>
                 <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Google&#39;</span><span class="p">,</span>
                 <span class="n">openid_url</span><span class="o">=</span><span class="s1">&#39;https://www.google.com/accounts/o8/id&#39;</span><span class="p">),</span>
        <span class="p">]</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>You can manually specify extra_data you want to request from server as follows:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> \
    <span class="p">{</span> <span class="s1">&#39;openid&#39;</span><span class="p">:</span>
        <span class="p">{</span> <span class="s1">&#39;SERVERS&#39;</span><span class="p">:</span>
             <span class="p">[</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="s1">&#39;mojeid&#39;</span><span class="p">,</span>
                  <span class="n">name</span><span class="o">=</span><span class="s1">&#39;MojeId&#39;</span><span class="p">,</span>
                  <span class="n">openid_url</span><span class="o">=</span><span class="s1">&#39;https://mojeid.cz/endpoint/&#39;</span><span class="p">,</span>
                  <span class="n">extra_attributes</span> <span class="o">=</span> <span class="p">[</span>
                      <span class="p">(</span><span class="s1">&#39;phone&#39;</span><span class="p">,</span> <span class="s1">&#39;http://axschema.org/contact/phone/default&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
                      <span class="p">(</span><span class="s1">&#39;birth_date&#39;</span><span class="p">,</span> <span class="s1">&#39;http://axschema.org/birthDate&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">,),</span>
                  <span class="p">])]}}</span>
</pre></div>
</div>
<p>Attributes are in form (id, name, required) where id is key in extra_data field of socialaccount,
name is identifier of requested attribute and required specifies whether attribute is required.</p>
<p>If you want to manually include login links yourself, you can use the
following template tag:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="n">load</span> <span class="n">socialaccount</span> <span class="o">%</span><span class="p">}</span>
<span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;{% provider_login_url &quot;</span><span class="n">openid</span><span class="s2">&quot; openid=&quot;</span><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="o">.</span><span class="n">google</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">accounts</span><span class="o">/</span><span class="n">o8</span><span class="o">/</span><span class="nb">id</span><span class="s2">&quot; next=&quot;</span><span class="o">/</span><span class="n">success</span><span class="o">/</span><span class="n">url</span><span class="o">/</span><span class="s2">&quot; %}&quot;</span><span class="o">&gt;</span><span class="n">Google</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span>
</pre></div>
</div>
</div>
<div class="section" id="orcid">
<h2>ORCID<a class="headerlink" href="#orcid" title="Permalink to this headline"></a></h2>
<p>The ORCID provider should work out of the box provided that you are using the
Production ORCID registry and the public API. In other settings, you will need
to define the API you are using in your site’s settings, as follows:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;orcid&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="c1"># Base domain of the API. Default value: &#39;orcid.org&#39;, for the production API</span>
        <span class="s1">&#39;BASE_DOMAIN&#39;</span><span class="p">:</span><span class="s1">&#39;sandbox.orcid.org&#39;</span><span class="p">,</span>  <span class="c1"># for the sandbox API</span>
        <span class="c1"># Member API or Public API? Default: False (for the public API)</span>
        <span class="s1">&#39;MEMBER_API&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">,</span>  <span class="c1"># for the member API</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="patreon">
<h2>Patreon<a class="headerlink" href="#patreon" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://www.patreon.com/platform/documentation/clients">https://www.patreon.com/platform/documentation/clients</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://127.0.0.1:8000/accounts/patreon/login/callback/">http://127.0.0.1:8000/accounts/patreon/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="paypal">
<h2>Paypal<a class="headerlink" href="#paypal" title="Permalink to this headline"></a></h2>
<p>The following Paypal settings are available:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;paypal&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;openid&#39;</span><span class="p">,</span> <span class="s1">&#39;email&#39;</span><span class="p">],</span>
        <span class="s1">&#39;MODE&#39;</span><span class="p">:</span> <span class="s1">&#39;live&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<dl class="docutils">
<dt>SCOPE:</dt>
<dd>In the Paypal developer site, you must also check the required attributes
for your application. For a full list of scope options, see
<a class="reference external" href="https://developer.paypal.com/docs/integration/direct/identity/attributes/">https://developer.paypal.com/docs/integration/direct/identity/attributes/</a></dd>
<dt>MODE:</dt>
<dd>Either <code class="docutils literal"><span class="pre">live</span></code> or <code class="docutils literal"><span class="pre">test</span></code>. Set to test to use the Paypal sandbox.</dd>
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://developer.paypal.com/webapps/developer/applications/myapps">https://developer.paypal.com/webapps/developer/applications/myapps</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://example.com/accounts/paypal/login/callback">http://example.com/accounts/paypal/login/callback</a></dd>
</dl>
</div>
<div class="section" id="persona">
<h2>Persona<a class="headerlink" href="#persona" title="Permalink to this headline"></a></h2>
<p>Note: Mozilla Persona was shut down on November 30th 2016. See
<a class="reference external" href="https://wiki.mozilla.org/Identity/Persona_Shutdown_Guidelines_for_Reliers">the announcement</a>
for details.</p>
<p>Mozilla Persona requires one setting, the “AUDIENCE” which needs to be the
hardcoded hostname and port of your website. See
<a class="reference external" href="https://developer.mozilla.org/en-US/Persona/Security_Considerations#Explicitly_specify_the_audience_parameter">https://developer.mozilla.org/en-US/Persona/Security_Considerations#Explicitly_specify_the_audience_parameter</a>
for more information why this needs to be set explicitly and can’t be derived
from user provided data:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;persona&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;AUDIENCE&#39;</span><span class="p">:</span> <span class="s1">&#39;https://www.example.com&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>The optional <code class="docutils literal"><span class="pre">REQUEST_PARAMETERS</span></code> dictionary contains parameters that are
passed as is to the <code class="docutils literal"><span class="pre">navigator.id.request()</span></code> method to influence the
look and feel of the Persona dialog:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;persona&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;AUDIENCE&#39;</span><span class="p">:</span> <span class="s1">&#39;https://www.example.com&#39;</span><span class="p">,</span>
        <span class="s1">&#39;REQUEST_PARAMETERS&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;siteName&#39;</span><span class="p">:</span> <span class="s1">&#39;Example&#39;</span><span class="p">},</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="pinterest">
<h2>Pinterest<a class="headerlink" href="#pinterest" title="Permalink to this headline"></a></h2>
<p>The Pinterest OAuth2 documentation:</p>
<blockquote>
<div><a class="reference external" href="https://developers.pinterest.com/docs/api/overview/#authentication">https://developers.pinterest.com/docs/api/overview/#authentication</a></div></blockquote>
<p>You can optionally specify additional permissions to use. If no <code class="docutils literal"><span class="pre">SCOPE</span></code>
value is set, the Pinterest provider will use <code class="docutils literal"><span class="pre">read_public</span></code> by default.</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;pinterest&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span>
            <span class="s1">&#39;read_public&#39;</span><span class="p">,</span>
            <span class="s1">&#39;read_relationships&#39;</span><span class="p">,</span>
        <span class="p">]</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<dl class="docutils">
<dt>SCOPE:</dt>
<dd>For a full list of scope options, see
<a class="reference external" href="https://developers.pinterest.com/docs/api/overview/#scopes">https://developers.pinterest.com/docs/api/overview/#scopes</a></dd>
</dl>
</div>
<div class="section" id="reddit">
<h2>Reddit<a class="headerlink" href="#reddit" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://www.reddit.com/prefs/apps/">https://www.reddit.com/prefs/apps/</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/reddit/login/callback/">http://localhost:8000/accounts/reddit/login/callback/</a></dd>
</dl>
<p>By default, access to Reddit is temporary. You can specify the <code class="docutils literal"><span class="pre">duration</span></code>
auth parameter to make it <code class="docutils literal"><span class="pre">permanent</span></code>.</p>
<p>You can optionally specify additional permissions to use. If no <code class="docutils literal"><span class="pre">SCOPE</span></code>
value is set, the Reddit provider will use <code class="docutils literal"><span class="pre">identity</span></code> by default.</p>
<p>In addition, you should override your user agent to comply with Reddit’s API
rules, and specify something in the format
<code class="docutils literal"><span class="pre">&lt;platform&gt;:&lt;app</span> <span class="pre">ID&gt;:&lt;version</span> <span class="pre">string&gt;</span> <span class="pre">(by</span> <span class="pre">/u/&lt;reddit</span> <span class="pre">username&gt;)</span></code>. Otherwise,
you will risk additional rate limiting in your application.</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;reddit&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;AUTH_PARAMS&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;duration&#39;</span><span class="p">:</span> <span class="s1">&#39;permanent&#39;</span><span class="p">},</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;identity&#39;</span><span class="p">,</span> <span class="s1">&#39;submit&#39;</span><span class="p">],</span>
        <span class="s1">&#39;USER_AGENT&#39;</span><span class="p">:</span> <span class="s1">&#39;django:myappid:1.0 (by /u/yourredditname)&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="salesforce">
<h2>Salesforce<a class="headerlink" href="#salesforce" title="Permalink to this headline"></a></h2>
<p>The Salesforce provider requires you to set the login VIP as the provider
model’s ‘key’ (in addition to client id and secret). Production environments
use <a class="reference external" href="https://login.salesforce.com/">https://login.salesforce.com/</a>. Sandboxes use <a class="reference external" href="https://test.salesforce.com/">https://test.salesforce.com/</a>.</p>
<p>HTTPS is required for the callback.</p>
<dl class="docutils">
<dt>Development callback URL</dt>
<dd><a class="reference external" href="https://localhost:8000/accounts/salesforce/login/callback/">https://localhost:8000/accounts/salesforce/login/callback/</a></dd>
<dt>Salesforce OAuth2 documentation</dt>
<dd><a class="reference external" href="https://developer.salesforce.com/page/Digging_Deeper_into_OAuth_2.0_on_Force.com">https://developer.salesforce.com/page/Digging_Deeper_into_OAuth_2.0_on_Force.com</a></dd>
</dl>
<p>To Use:</p>
<ul class="simple">
<li>Include allauth.socialaccount.providers.salesforce in INSTALLED_APPS</li>
<li>In a new Salesforce Developer Org, create a Connected App
with OAuth (minimum scope id, openid), and a callback URL</li>
<li>Create a Social application in Django admin, with client id,
client key, and login_url (in “key” field)</li>
</ul>
</div>
<div class="section" id="shopify">
<h2>Shopify<a class="headerlink" href="#shopify" title="Permalink to this headline"></a></h2>
<p>The Shopify provider requires a <code class="docutils literal"><span class="pre">shop</span></code> parameter to login. For
example, for a shop <code class="docutils literal"><span class="pre">petstore.myshopify.com</span></code>, use this:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>/accounts/shopify/login/?shop=petstore
</pre></div>
</div>
<p>You can create login URLs like these as follows:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="n">provider_login_url</span> <span class="s2">&quot;shopify&quot;</span> <span class="n">shop</span><span class="o">=</span><span class="s2">&quot;petstore&quot;</span> <span class="o">%</span><span class="p">}</span>
</pre></div>
</div>
<p>For setting up authentication in your app, use this url as your <code class="docutils literal"><span class="pre">App</span> <span class="pre">URL</span></code>
(if your server runs at localhost:8000):</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">8000</span><span class="o">/</span><span class="n">accounts</span><span class="o">/</span><span class="n">shopify</span><span class="o">/</span><span class="n">login</span><span class="o">/</span>
</pre></div>
</div>
<p>And set <code class="docutils literal"><span class="pre">Redirection</span> <span class="pre">URL</span></code> to:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">8000</span><span class="o">/</span><span class="n">accounts</span><span class="o">/</span><span class="n">shopify</span><span class="o">/</span><span class="n">login</span><span class="o">/</span><span class="n">callback</span><span class="o">/</span>
</pre></div>
</div>
<p><strong>Embedded Apps</strong></p>
<p>If your Shopify app is embedded you will want to tell allauth to do the required JS (rather than server) redirect.:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;shopify&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;IS_EMBEDDED&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Note that there is more an embedded app creator must do in order to have a page work as an iFrame within
Shopify (building the x_frame_exempt landing page, handing session expiration, etc…).
However that functionality is outside the scope of django-allauth.</p>
<p><strong>Online/per-user access mode</strong>
Shopify has two access modes, offline (the default) and online/per-user. Enabling ‘online’ access will
cause all-auth to tie the logged in Shopify user to the all-auth account (rather than the shop as a whole).:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;shopify&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;AUTH_PARAMS&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;grant_options[]&#39;</span><span class="p">:</span> <span class="s1">&#39;per-user&#39;</span><span class="p">},</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="slack">
<h2>Slack<a class="headerlink" href="#slack" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://api.slack.com/apps/new">https://api.slack.com/apps/new</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://example.com/accounts/slack/login/callback/">http://example.com/accounts/slack/login/callback/</a></dd>
<dt>API documentation</dt>
<dd><a class="reference external" href="https://api.slack.com/docs/sign-in-with-slack">https://api.slack.com/docs/sign-in-with-slack</a></dd>
</dl>
</div>
<div class="section" id="soundcloud">
<h2>SoundCloud<a class="headerlink" href="#soundcloud" title="Permalink to this headline"></a></h2>
<p>SoundCloud allows you to choose between OAuth1 and OAuth2. Choose the latter.</p>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="http://soundcloud.com/you/apps/new">http://soundcloud.com/you/apps/new</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://example.com/accounts/soundcloud/login/callback/">http://example.com/accounts/soundcloud/login/callback/</a></dd>
</dl>
</div>
<div class="section" id="stack-exchange">
<h2>Stack Exchange<a class="headerlink" href="#stack-exchange" title="Permalink to this headline"></a></h2>
<p>Register your OAuth2 app over at <code class="docutils literal"><span class="pre">http://stackapps.com/apps/oauth/register</span></code>.
Do not enable “Client Side Flow”. For local development you can simply use
“localhost” for the OAuth domain.</p>
<p>As for all providers, provider specific data is stored in
<code class="docutils literal"><span class="pre">SocialAccount.extra_data</span></code>. For Stack Exchange we need to choose what data to
store there by choosing the Stack Exchange site (e.g. Stack Overflow, or
Server Fault). This can be controlled by means of the <code class="docutils literal"><span class="pre">SITE</span></code> setting:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;stackexchange&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;SITE&#39;</span><span class="p">:</span> <span class="s1">&#39;stackoverflow&#39;</span><span class="p">,</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="stripe">
<h2>Stripe<a class="headerlink" href="#stripe" title="Permalink to this headline"></a></h2>
<p>You register your OAUth2 app via the Connect-&gt;Settings page of the Stripe
dashboard:</p>
<blockquote>
<div><a class="reference external" href="https://dashboard.stripe.com/account/applications/settings">https://dashboard.stripe.com/account/applications/settings</a></div></blockquote>
<p>This page will provide you with both a Development and Production <cite>client_id</cite>.</p>
<p>You can also register your OAuth2 app callback on the Settings page in the
“Website URL” box, e.g.:</p>
<blockquote>
<div><a class="reference external" href="http://example.com/accounts/stripe/login/callback/">http://example.com/accounts/stripe/login/callback/</a></div></blockquote>
<p>However, the OAuth2 secret key is not on this page. The secret key is the same
secret key that you use with the Stripe API generally. This can be found on the
Stripe dashboard API page:</p>
<blockquote>
<div><a class="reference external" href="https://dashboard.stripe.com/account/apikeys">https://dashboard.stripe.com/account/apikeys</a></div></blockquote>
<dl class="docutils">
<dt>See more in documentation</dt>
<dd><a class="reference external" href="https://stripe.com/docs/connect/standalone-accounts">https://stripe.com/docs/connect/standalone-accounts</a></dd>
</dl>
</div>
<div class="section" id="twitch">
<h2>Twitch<a class="headerlink" href="#twitch" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="http://www.twitch.tv/kraken/oauth2/clients/new">http://www.twitch.tv/kraken/oauth2/clients/new</a></dd>
</dl>
</div>
<div class="section" id="twitter">
<h2>Twitter<a class="headerlink" href="#twitter" title="Permalink to this headline"></a></h2>
<p>You will need to create a Twitter app and configure the Twitter provider for
your Django application via the admin interface.</p>
<div class="section" id="id2">
<h3>App registration<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h3>
<p>To register an app on Twitter you will need a Twitter account. With an account, you
can create a new app via:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">apps</span><span class="o">.</span><span class="n">twitter</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">app</span><span class="o">/</span><span class="n">new</span>
</pre></div>
</div>
<p>In the app creation form fill in the development callback URL:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">:</span><span class="mi">8000</span><span class="o">/</span><span class="n">accounts</span><span class="o">/</span><span class="n">twitter</span><span class="o">/</span><span class="n">login</span><span class="o">/</span><span class="n">callback</span><span class="o">/</span>
</pre></div>
</div>
<p>Twitter won’t allow using <a class="reference external" href="http://localhost:8000">http://localhost:8000</a>.</p>
<p>For production use a callback URL such as:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="p">{{</span><span class="n">yourdomain</span><span class="p">}}</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">accounts</span><span class="o">/</span><span class="n">twitter</span><span class="o">/</span><span class="n">login</span><span class="o">/</span><span class="n">callback</span><span class="o">/</span>
</pre></div>
</div>
<p>To allow users to login without authorizing each session, select “Allow this
application to be used to Sign in with Twitter” under the application’s
“Settings” tab.</p>
</div>
<div class="section" id="app-database-configuration-through-admin">
<h3>App database configuration through admin<a class="headerlink" href="#app-database-configuration-through-admin" title="Permalink to this headline"></a></h3>
<p>The second part of setting up the Twitter provider requires you to configure
your Django application. Configuration is done by creating a Socialapp object
in the admin. Add a social app on the admin page:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">admin</span><span class="o">/</span><span class="n">socialaccount</span><span class="o">/</span><span class="n">socialapp</span><span class="o">/</span>
</pre></div>
</div>
<p>Use the twitter keys tab of your application to fill in the form. It’s located:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">apps</span><span class="o">.</span><span class="n">twitter</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">app</span><span class="o">/</span><span class="p">{{</span><span class="n">yourappid</span><span class="p">}}</span><span class="o">/</span><span class="n">keys</span>
</pre></div>
</div>
<p>The configuration is as follows:</p>
<ul class="simple">
<li>Provider, “Twitter”</li>
<li>Name, your pick, suggest “Twitter”</li>
<li>Client id, is called “Consumer Key (API Key)” on Twitter</li>
<li>Secret key, is called “Consumer Secret (API Secret)” on Twitter</li>
<li>Key, is not needed, leave blank</li>
</ul>
</div>
</div>
<div class="section" id="untappd">
<h2>Untappd<a class="headerlink" href="#untappd" title="Permalink to this headline"></a></h2>
<div class="section" id="id3">
<h3>App registration<a class="headerlink" href="#id3" title="Permalink to this headline"></a></h3>
<blockquote>
<div><a class="reference external" href="https://untappd.com/api/register?register=new">https://untappd.com/api/register?register=new</a></div></blockquote>
<p>In the app creation form fill in the development callback URL, e.g.:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">:</span><span class="mi">8000</span><span class="o">/</span><span class="n">accounts</span><span class="o">/</span><span class="n">untappd</span><span class="o">/</span><span class="n">login</span><span class="o">/</span><span class="n">callback</span><span class="o">/</span>
</pre></div>
</div>
<p>For production, make it your production host, e.g.:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">yoursite</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">accounts</span><span class="o">/</span><span class="n">untappd</span><span class="o">/</span><span class="n">login</span><span class="o">/</span><span class="n">callback</span><span class="o">/</span>
</pre></div>
</div>
</div>
<div class="section" id="socialapp-configuration">
<h3>SocialApp configuration<a class="headerlink" href="#socialapp-configuration" title="Permalink to this headline"></a></h3>
<p>The configuration values come from your API dashboard on Untappd:</p>
<blockquote>
<div><a class="reference external" href="https://untappd.com/api/dashboard">https://untappd.com/api/dashboard</a></div></blockquote>
<ul class="simple">
<li>Provider: “Untappd”</li>
<li>Name: “Untappd”</li>
<li>Client id: “Client ID” from Untappd</li>
<li>Secret key: “Client Secret” from Untappd</li>
<li>Sites: choose your site</li>
</ul>
</div>
</div>
<div class="section" id="vimeo">
<h2>Vimeo<a class="headerlink" href="#vimeo" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://developer.vimeo.com/apps">https://developer.vimeo.com/apps</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000">http://localhost:8000</a></dd>
</dl>
</div>
<div class="section" id="vk">
<h2>VK<a class="headerlink" href="#vk" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration</dt>
<dd><a class="reference external" href="https://vk.com/editapp?act=create">https://vk.com/editapp?act=create</a></dd>
<dt>Development callback URL (“Site address”)</dt>
<dd><a class="reference external" href="http://localhost">http://localhost</a></dd>
</dl>
</div>
<div class="section" id="windows-live">
<h2>Windows Live<a class="headerlink" href="#windows-live" title="Permalink to this headline"></a></h2>
<p>The Windows Live provider currently does not use any settings in
<code class="docutils literal"><span class="pre">SOCIALACCOUNT_PROVIDERS</span></code>.</p>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://apps.dev.microsoft.com/#/appList">https://apps.dev.microsoft.com/#/appList</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000/accounts/windowslive/login/callback/">http://localhost:8000/accounts/windowslive/login/callback/</a></dd>
</dl>
<p>Microsoft calls the “client_id” an “Application Id” and it is a UUID. Also,
the “client_secret” is not created by default, you must edit the application
after it is created, then click “Generate New Password” to create it.</p>
</div>
<div class="section" id="weibo">
<h2>Weibo<a class="headerlink" href="#weibo" title="Permalink to this headline"></a></h2>
<p>Register your OAuth2 app over at <code class="docutils literal"><span class="pre">http://open.weibo.com/apps</span></code>. Unfortunately,
Weibo does not allow for specifying a port number in the authorization
callback URL. So for development purposes you have to use a callback url of
the form <code class="docutils literal"><span class="pre">http://127.0.0.1/accounts/weibo/login/callback/</span></code> and run
<code class="docutils literal"><span class="pre">runserver</span> <span class="pre">127.0.0.1:80</span></code>.</p>
</div>
<div class="section" id="weixin">
<h2>Weixin<a class="headerlink" href="#weixin" title="Permalink to this headline"></a></h2>
<p>The Weixin OAuth2 documentation:</p>
<blockquote>
<div><a class="reference external" href="https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&amp;t=resource/res_list&amp;verify=1&amp;id=open1419316505&amp;token=&amp;lang=zh_CN">https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&amp;t=resource/res_list&amp;verify=1&amp;id=open1419316505&amp;token=&amp;lang=zh_CN</a></div></blockquote>
<p>Weixin supports two kinds of oauth2 authorization, one for open platform and
one for media platform, AUTHORIZE_URL is the only difference between them, you
can specify <code class="docutils literal"><span class="pre">AUTHORIZE_URL</span></code> in setting, If no <code class="docutils literal"><span class="pre">AUTHORIZE_URL</span></code> value is set
will support open platform by default, which value is
<code class="docutils literal"><span class="pre">https://open.weixin.qq.com/connect/qrconnect</span></code>.</p>
<p>You can optionally specify additional scope to use. If no <code class="docutils literal"><span class="pre">SCOPE</span></code> value
is set, will use <code class="docutils literal"><span class="pre">snsapi_login</span></code> by default(for Open Platform Account, need
registration). Other <code class="docutils literal"><span class="pre">SCOPE</span></code> options are: snsapi_base, snsapi_userinfo.</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">SOCIALACCOUNT_PROVIDERS</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s1">&#39;weixin&#39;</span><span class="p">:</span> <span class="p">{</span>
        <span class="s1">&#39;AUTHORIZE_URL&#39;</span><span class="p">:</span> <span class="s1">&#39;https://open.weixin.qq.com/connect/oauth2/authorize&#39;</span><span class="p">,</span>  <span class="c1"># for media platform</span>
        <span class="s1">&#39;SCOPE&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;snsapi_base&#39;</span><span class="p">],</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="xing">
<h2>Xing<a class="headerlink" href="#xing" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>App registration (get your key and secret here)</dt>
<dd><a class="reference external" href="https://dev.xing.com/applications">https://dev.xing.com/applications</a></dd>
<dt>Development callback URL</dt>
<dd><a class="reference external" href="http://localhost:8000">http://localhost:8000</a></dd>
</dl>
</div>
<div class="section" id="yahoo">
<h2>Yahoo<a class="headerlink" href="#yahoo" title="Permalink to this headline"></a></h2>
<dl class="docutils">
<dt>Register your OAuth2 app below and enter the resultant client id and secret into admin</dt>
<dd><a class="reference external" href="https://developer.yahoo.com/apps/create/">https://developer.yahoo.com/apps/create/</a></dd>
</dl>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Providers</a><ul>
<li><a class="reference internal" href="#andme">23andMe</a></li>
<li><a class="reference internal" href="#px">500px</a></li>
<li><a class="reference internal" href="#amazon">Amazon</a></li>
<li><a class="reference internal" href="#angellist">AngelList</a></li>
<li><a class="reference internal" href="#auth0">Auth0</a></li>
<li><a class="reference internal" href="#authentiq">Authentiq</a></li>
<li><a class="reference internal" href="#baidu">Baidu</a></li>
<li><a class="reference internal" href="#basecamp">Basecamp</a></li>
<li><a class="reference internal" href="#battle-net">Battle.net</a></li>
<li><a class="reference internal" href="#bitbucket">Bitbucket</a></li>
<li><a class="reference internal" href="#box">Box</a></li>
<li><a class="reference internal" href="#dataporten">Dataporten</a></li>
<li><a class="reference internal" href="#daum">daum</a></li>
<li><a class="reference internal" href="#digitalocean">DigitalOcean</a></li>
<li><a class="reference internal" href="#discord">Discord</a></li>
<li><a class="reference internal" href="#doximity">Doximity</a></li>
<li><a class="reference internal" href="#draugiem">Draugiem</a></li>
<li><a class="reference internal" href="#dropbox">Dropbox</a></li>
<li><a class="reference internal" href="#dwolla">Dwolla</a></li>
<li><a class="reference internal" href="#id1">Dwolla</a></li>
<li><a class="reference internal" href="#edmodo">Edmodo</a></li>
<li><a class="reference internal" href="#eve-online">Eve Online</a></li>
<li><a class="reference internal" href="#eventbrite">Eventbrite</a></li>
<li><a class="reference internal" href="#evernote">Evernote</a></li>
<li><a class="reference internal" href="#facebook">Facebook</a></li>
<li><a class="reference internal" href="#firefox-accounts">Firefox Accounts</a></li>
<li><a class="reference internal" href="#flickr">Flickr</a></li>
<li><a class="reference internal" href="#github">GitHub</a><ul>
<li><a class="reference internal" href="#enterprise-support">Enterprise Support</a></li>
</ul>
</li>
<li><a class="reference internal" href="#gitlab">GitLab</a></li>
<li><a class="reference internal" href="#google">Google</a><ul>
<li><a class="reference internal" href="#app-registration">App registration</a></li>
<li><a class="reference internal" href="#django-configuration">Django configuration</a></li>
</ul>
</li>
<li><a class="reference internal" href="#instagram">Instagram</a></li>
<li><a class="reference internal" href="#kakao">Kakao</a></li>
<li><a class="reference internal" href="#line">Line</a></li>
<li><a class="reference internal" href="#linkedin">LinkedIn</a><ul>
<li><a class="reference internal" href="#authorized-redirect-urls-oauth2">Authorized Redirect URLs (OAuth2)</a></li>
<li><a class="reference internal" href="#development-accept-and-cancel-redirect-url-oauth-1-0a">Development “Accept” and “Cancel” redirect URL (OAuth 1.0a)</a></li>
</ul>
</li>
<li><a class="reference internal" href="#mailchimp-oauth2">MailChimp (OAuth2)</a><ul>
<li><a class="reference internal" href="#registering-a-new-app">Registering a new app</a></li>
<li><a class="reference internal" href="#testing-locally">Testing Locally</a></li>
</ul>
</li>
<li><a class="reference internal" href="#microsoft-graph">Microsoft Graph</a></li>
<li><a class="reference internal" href="#naver">Naver</a></li>
<li><a class="reference internal" href="#odnoklassniki">Odnoklassniki</a></li>
<li><a class="reference internal" href="#openid">OpenID</a></li>
<li><a class="reference internal" href="#orcid">ORCID</a></li>
<li><a class="reference internal" href="#patreon">Patreon</a></li>
<li><a class="reference internal" href="#paypal">Paypal</a></li>
<li><a class="reference internal" href="#persona">Persona</a></li>
<li><a class="reference internal" href="#pinterest">Pinterest</a></li>
<li><a class="reference internal" href="#reddit">Reddit</a></li>
<li><a class="reference internal" href="#salesforce">Salesforce</a></li>
<li><a class="reference internal" href="#shopify">Shopify</a></li>
<li><a class="reference internal" href="#slack">Slack</a></li>
<li><a class="reference internal" href="#soundcloud">SoundCloud</a></li>
<li><a class="reference internal" href="#stack-exchange">Stack Exchange</a></li>
<li><a class="reference internal" href="#stripe">Stripe</a></li>
<li><a class="reference internal" href="#twitch">Twitch</a></li>
<li><a class="reference internal" href="#twitter">Twitter</a><ul>
<li><a class="reference internal" href="#id2">App registration</a></li>
<li><a class="reference internal" href="#app-database-configuration-through-admin">App database configuration through admin</a></li>
</ul>
</li>
<li><a class="reference internal" href="#untappd">Untappd</a><ul>
<li><a class="reference internal" href="#id3">App registration</a></li>
<li><a class="reference internal" href="#socialapp-configuration">SocialApp configuration</a></li>
</ul>
</li>
<li><a class="reference internal" href="#vimeo">Vimeo</a></li>
<li><a class="reference internal" href="#vk">VK</a></li>
<li><a class="reference internal" href="#windows-live">Windows Live</a></li>
<li><a class="reference internal" href="#weibo">Weibo</a></li>
<li><a class="reference internal" href="#weixin">Weixin</a></li>
<li><a class="reference internal" href="#xing">Xing</a></li>
<li><a class="reference internal" href="#yahoo">Yahoo</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="configuration.html"
                        title="previous chapter">Configuration</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="signals.html"
                        title="next chapter">Signals</a></p>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="_sources/providers.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <div><input type="text" name="q" /></div>
      <div><input type="submit" value="Go" /></div>
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="signals.html" title="Signals"
             >next</a> |</li>
        <li class="right" >
          <a href="configuration.html" title="Configuration"
             >previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="index.html">django-allauth 0.32.0 documentation</a> &#187;</li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; Copyright 2018, Raymond Penners.
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6.
    </div>
  </body>
</html>