Giter Club home page Giter Club logo

django-socialregistration's Introduction

django-socialregistration

django-socialregistration enables developers to add user registration with OAuth, OAuth2 and OpenID services.

See documentation for installation and configuration.

TODO

  • Get rid of facebook-sdk dependency and replace with requests
  • Get rid of oauth2 and httplib2 dependencies and replace with requests and requests-oauth

django-socialregistration's People

Contributors

adamfast avatar adrianribao avatar aljosa avatar amosson avatar bergantine avatar bildja avatar bradbeattie avatar claymation avatar danj avatar dbrgn avatar devioustree avatar flashingpumpkin avatar jablko avatar jaylett avatar jeanphix avatar jespern avatar katomaso avatar kylef avatar lizrice avatar muhuk avatar pinda avatar reillywatson avatar selwin avatar statico avatar theju avatar thoblr avatar zalmoxis avatar zerok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

django-socialregistration's Issues

CSRF Verification Error

Using django-trunk I get the following error just for twitter

403 Forbidden

CSRF verification failed. Request aborted.

Help

Reason given for failure:

CSRF cookie not set.

In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:

The view function uses RequestContext for the template, instead of Context.
In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.
You're seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed.

You can customize this page using the CSRF_FAILURE_VIEW setting.

Setup

I have a profile model associated with the users, and everytime the user is created the profile should be created also.

Should we create a new custom setup view for this purpose?

I'm finding several problems because the documentation is poor.

Thank you very much.

Account Connect?

Maybe I'm just missing something, but I'm stuck here - is there a way to 'connect' accounts on other sites to an already-existing user?

For example, I've already signed up on Really Awesome Website, so I don't need to sign up again - but I'd like to connect my Facebook and Twitter accounts so that I can sign in with those as well.

Is there a way to do this already? If there isn't...how would I do it?

[Request] New Login with Facebook

Any change to move using the new Facebook API? Documentation seems pretty easy and I would love to see this as part of django-socialregistration workflow:

http://developers.facebook.com/docs/guides/web#login

And it would be cool if this would support new Python SDK by Facebook:

http://github.com/facebook/python-sdk

Things I would like to see:

  • Extended permission (could set in settings.py which ones I need)
  • Make .js stuff work that it's easy to use same code with social objects (e.g. 'Like' box)
  • Support for Django 1.1.x <3

Any plans to support?

Facebook and Logout

Hello,

I am using either regular django auth and socialregistration's facebook login for the site and I see an issue with logging out.

I have included Logout as instructed at the readme, however this fails if a user is not logged in via Facebook (just a regular user)

I think for fixing this I need to check if the user is a Facebook account or a Regular one. Sometning like:

        {% if facebook_account%}
            (<a href="#" onclick="FB.Connect.logoutAndRedirect('{% url auth_logout %}')">Quit</a>)
        {% else %}
            (<a href="{% url auth_logout %}" >Quit</a>)
        {% endif %}

How can I achieve this?

Build Problem - Missing README.rst on tarball

Here is the error I got.

/usr/bin/python setup.py build
Traceback (most recent call last):
File "setup.py", line 9, in
long_description=open('README.rst').read(),
IOError: [Errno 2] No such file or directory: 'README.rst'
error: Bad exit status from /var/tmp/rpm-tmp.4HD1xq (%build)

Thanks.

oauth_callback not recognized by Twitter

It seems like the oauth_callback parameter is set to late for Twitter to actually use it. From what I could gather so far it should be set when requesting the original request token and not just when accessing the authentication URL.

Following this, the oauth_callback also doesn't do anything with the oauth_verifier included in the callback and therefor can't create a valid access token.

I've written a quick-fix for this available on https://gist.github.com/94cb6ca69e0e05aa81c5 but I'm not really sure how to integrate the oauth_verifier parameter. Accessing it directly from within _get_access_token doesn't feel right :-/

Invalid next parameter when using Facebook Connect

When authenticating using Facebook Connect, I get the following error:

API Error Code: 100
API Error Description: Invalid parameter
Error Message: next is not owned by the application.

It appears that the next parameter is not setup correctly by django-socialregistration.

facebook-python-sdk issue

So I'm trying to get django-socialregistration to work with my new django project and I have a few questions (I'm also a django n00b):

  1. Can I use it without using django-registration?

  2. Does this create the user tables at all cause I don't have any authentication or user model whatsoever. Kind of tied to (1) I guess

  3. One of the dependencies is the facebook-python-sdk but it has no easy_install. I git cloned it, and then installed it. I see it in my /lib/python2.6 but it seems that django doesn't know it exists. I also don't see it under the /lib/python2.6/easy-install.pth. I do see it when I do "yolk -l". Basically the error I get when I load my project in the browser is "Please make sure you have facebook.djangofb.FacebookMiddleware installed as a middleware." When I put it in the middleware it 500s and the error_log shows that it doesn't know what djangofb is. Also, "facebook.djangofb.FacebookMiddleware" isn't supposed to be there according to the django-socialregistration docs because I have 'socialregistration.middleware.FacebookMiddleware'.

FYI, I'm using webfaction as my host.

TemplateSyntaxError at / Caught NoReverseMatch while rendering: Reverse for 'facebook_login' with arguments '()' and keyword arguments '{}' not found.

Caught NoReverseMatch while rendering: Reverse for 'facebook_login' with arguments '()' and keyword arguments '{}' not found.

In template /usr/local/lib/python2.6/dist-packages/socialregistration/templates/socialregistration/facebook_button.html, error at line 6

My first assumption was that I was not including socialregistration's URLs correctly but I have this in my urls.py file

from socialregistration.urls import *

Any ideas?

AttributeError : 'module' object has no attribute 'get_user_from_cookie'

Hi,
I have installed socialregistration, pyfacebook, facebook-python-sdk, sciyoshi-pyfacebook, and http://github.com/facebook/python-sdk/.

After all the setup, i am receiving weird errors: AttributeError : 'module' object has no attribute 'get_user_from_cookie'

The exception location is at : Exception Location: /usr/local/lib/python2.6/dist-packages/django_socialregistration-0.4.2-py2.6.egg/socialregistration/middleware.py in process_request, line 23

I am testing out on a website, you can have a look at www.tabbing.me/rapidtask/

May I know if its a bug?

With Twitter it always ask for authorization

When I try to make twitter work, it always ask me for Authorization, even when I already authorized it already, I was looking at the code but is too late now. But I think it has to do with the OAuthClient that always asks for the _get_authorization_url.

How to retrieve email in openid and facebook?

I would really appreciate that someone tell me how it is possible to retrieve the email from the provider. I really don't know where to start (no documentation about this)
thanks

FAIL: test_open_id_error (socialregistration.tests.templatetags.SocialRegistrationTemplateTagTests)

This came up after upgrading packages (also pyfacebook to python-sdk), do latest openid libs work differently?

Django==1.2.3
oauth==1.0a
oauth2==1.2.0
python-openid==2.2.5
Python 2.6.4

Fix: self.assertEqual(result, u'False|')

FAIL: test_open_id_error (socialregistration.tests.templatetags.SocialRegistrationTemplateTagTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/socialregistration/tests/templatetags.py", line 42, in test_open_id_error
    self.assertEqual(result, u'|')
AssertionError: u'False|' != u'|'

Weirdness with blank request.facebook object

I have the socialregistration.context_processors.auth context processor installed, and the {{ get_avatar }} context variable works well -- I can see my Facebook profile icon.

However, when I try to access {{ request.facebook }}, its attributes are useless. request.facebook is undoubtedly a djangofb.Facebook, but its useful attributes are blank. request.facebook.api_key is populated but things like request.facebook.uid are None.

Any ideas what could be causing this?

Add ability to request OpenID attributes such as email_address

Hello! I'm working with your library, and the basics seem to be working smoothly!

However, I'd really prefer to request that the OpenID provider pass on the customer's basic data at least, like this (inserted into get_redirect, in utils.py):

from openid.extensions import sreg
sreg_request = sreg.SRegRequest(required=['nickname'], optional=['fullname', 'email'])
auth_request.addExtension(sreg_request)

Ideally, a config param set:

 SOCIALREGISTRATION_OPENID_REQUEST_ATTRIBUTES=True
 SOCIALREGISTRATION_OPENID_REQUIRED_ATTRIBUTES=['nickname']
 SOCIALREGISTRATION_OPENID_OPTIONAL_ATTRIBUTES=['fullname','email']

Thanks!

Tim

using socialregistration in fb canvas app?

i'm trying to use socialregistration to authorize fb users for fb canvas app and sometimes it works sometimes not.
has anyone used socialregistration for fb canvas app?

i think most issues are somehow related to cookie, browser cache and other iframe situations.
i have most issues with webkit based browsers but others have issues also.

Error: Caught NoReverseMatch while rendering: Reverse for 'facebook_connect' with arguments '()' and keyword arguments '{}' not found.

When adding {% facebook_button %} to my template I get the error:
Caught NoReverseMatch while rendering: Reverse for 'facebook_connect' with arguments '()' and keyword arguments '{}' not found.

1 {% load socialregistration_tags %}
2 {% comment %}
3 <fb:login-button autologoutlink="true" perms="email,user_birthday,status_update,publish_stream">/fb:login-button
4 {% endcomment %}
5
6


7 {% social_csrf_token %}
8 {% if next %}
9
10 {% endif %}
11
12
13

OAuth callback URL = sign needs to be URL quoted

Disclaimer: first issue on github so please forgive all my impending faux pas

User/Project@SHA: ref c9b82ff

I have two issues, one before the above commit and another after.

Before the commit:
Twitter authentication attempts go through to the Twitter site and allow me to allow my application. The issue is that it then continues onto a Twitter page showing a PIN that I am supposed to enter on my site... where? I have no idea. I haven't figured out any resolution to this.

After the commit:
I get an OAuthError exception saying "Invalid response while obtaining request token from "api.twitter.com"." Digging deeper I found that Twitter seems to be returning a 401 saying "Failed to validate oauth signature and token". After much ado I found:

http://dev.twitter.com/pages/auth#request-token

and noticed that not only did they url encode the callback url parameter but they also encoded the = before it to %3D (see the first gray text box). Doing the same 'manually' reverted me back to the pre-commit functionality. Alternatively see:

https://gist.github.com/764265

for a simple patch that does the same using urllib.quote(). Note that even then I still get the Twitter PIN page rather than being returned to my site even after applying my patch to the latest commit.

I assume this commit didn't break everything for everyone else but I don't know why I'm special at this point. Might be that I'm integrating this into django-nonrel for use on Google AppEngine but I don't know how. Locally I'm running Python 2.6 while GAE is Python 2.5.

Best way to show logged in username with FB

I'm purely using facebook SSO for a project for general user interaction. Whats the best way to show the logged in username and profile picture of the logged in user. I should note I'm using SOCIALREGISTRATION_GENERATE_USERNAME

setup.py fails at fetching httplib2

Hi there,

I'm setting django-socialregistration for the first time. I have run:

python setup.py install

When getting to:

Using /usr/local/lib/python2.6/dist-packages
Searching for httplib2==0.4.0
Reading http://pypi.python.org/simple/httplib2/
Reading http://code.google.com/p/httplib2/
Reading http://bitworking.org/projects/httplib2/
Best match: httplib2 0.4.0
Downloading http://bitworking.org/projects/httplib2/dist/httplib2-0.4.0.tar.gz
error: Can't download http://bitworking.org/projects/httplib2/dist/httplib2-0.4.0.tar.gz: 404 Not Found

Looks like easy_install URL is broken. So I guess somewhere in the documentation you could warn the user to install this dependency manually from http://httplib2.googlecode.com/files/httplib2-0.4.0.tar.gz
or use a Linux package system such as apt.

Thanks, regards
Miguel Araujo

pypi package broken

sh-3.2# pip install django-socialregistration
Downloading/unpacking django-socialregistration
  Downloading django-socialregistration-0.4.1.tar.gz
  Running setup.py egg_info for package django-socialregistration
    package init file 'socialregistration/__init__.py' not found (or not a regular file)
    error: package directory 'socialregistration/templatetags' does not exist
    Complete output from command python setup.py egg_info:
    running egg_info

creating pip-egg-info/django_socialregistration.egg-info

writing requirements to pip-egg-info/django_socialregistration.egg-info/requires.txt

writing pip-egg-info/django_socialregistration.egg-info/PKG-INFO

writing top-level names to pip-egg-info/django_socialregistration.egg-info/top_level.txt

writing dependency_links to pip-egg-info/django_socialregistration.egg-info/dependency_links.txt

writing manifest file 'pip-egg-info/django_socialregistration.egg-info/SOURCES.txt'

warning: manifest_maker: standard file '-c' not found

package init file 'socialregistration/__init__.py' not found (or not a regular file)

error: package directory 'socialregistration/templatetags' does not exist

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in ./pip-log.txt

Facebook login taking me to 500 error page

I've installed django-socialregistration (v0.4) and the facebook-python-sdk dependency. Ran syncdb (so all the SR tables are there).

I see the Facebook Connect button and when I click on it, I see the FB popup to give permission to my site. However, after that, it goes to www.mysite.com/socialregistration/facebook/login with a 500 Internal Server Error. Ideally this should then redirect to the socialregistration's setup page to let me create a new user, correct?

Right now the socialregistration_facebook table is empty. The User table only has my admin account (which is not logged in).

The error log shows this:

[Sat Jul 24 15:23:40 2010] [error] [client 127.0.0.1]     new_obj = func(obj, *arg_vals), referer: http://$$$.webfactional.com/
[Sat Jul 24 15:23:40 2010] [error] [client 127.0.0.1]   File "/home/$$$/webapps/django/lib/python2.6/django/template/defaultfilters.py", line 33, in _dec, referer: http://$$$.webfactional.com/
[Sat Jul 24 15:23:40 2010] [error] [client 127.0.0.1]     args[0] = force_unicode(args[0]), referer: http://$$$.webfactional.com/
[Sat Jul 24 15:23:40 2010] [error] [client 127.0.0.1]   File "/home/$$$/webapps/django/lib/python2.6/django/utils/encoding.py", line 66, in force_unicode, referer: http://$$$o.webfactional.com/
[Sat Jul 24 15:23:40 2010] [error] [client 127.0.0.1]     s = unicode(s), referer: http://$$$o.webfactional.com/
[Sat Jul 24 15:23:40 2010] [error] [client 127.0.0.1]   File "build/bdist.linux-i686/egg/socialregistration/models.py", line 13, in __unicode__, referer: http://$$$.webfactional.com/
[Sat Jul 24 15:23:40 2010] [error] [client 127.0.0.1]     return u'%s: %s' % (self.user, self.uid), referer: http://$$$.webfactional.com/
[Sat Jul 24 15:23:40 2010] [error] [client 127.0.0.1]   File "/home/$$$/webapps/django/lib/python2.6/django/db/models/fields/related.py", line 288, in __get__, referer: http://$$$.webfactional.com/
[Sat Jul 24 15:23:40 2010] [error] [client 127.0.0.1]     raise self.field.rel.to.DoesNotExist, referer: http://$$$.webfactional.com/
[Sat Jul 24 15:23:40 2010] [error] [client 127.0.0.1] TemplateSyntaxError: Caught DoesNotExist while rendering: , referer: http://$$$.webfactional.com/

Update:
So I tried hooking up Twitter as well. I'm basically getting the same error except now that I changed both Twitter and Facebook callback urls, they redirect to the /setup/ page - but still 500 error. Its possibly because I'm not sure if I need to hook up anything else. I'm assuming that the callback URL for Twitter should go to the .../twitter/callback/ and for Facebook it should be .../facebook/login/.

Update 2:
Found a temporary workaround - I tried SOCIALREGISTRATION_GENERATE_USERNAME = True and it works. Well, it redirects me to /accounts/profile (which doesn't exist - how do I customize this redirect?).

Small Python 2.4 incompatibility

There's a small syntax incompatibility with Python 2.4 that is IMHO not worth breaking support for that still quite widely used version. I have a commit (eb9cc14) on my tree that fixes the problem.

Session is lost at twitter callback

Facebook login works fine, so I think this has to be something special to Twitter:

When getting redirected to oauth_callback from Twitter, django creates a new session and therefore cannot find the request token in it.

Is it possible that Twitter somehow messes up my cookie?

Authentication?

FlashingPumpkin, does socialregistration handle generation authentication? If so, can you post an example of how to handle account access in the views? For instance, I am assuming that since Facebook is based on PyFacebook, that I have access to request.facebook and the facebook.require_login() decorator.

Thanks,
Adam

middlware

I just installed the app but is giving me the following error in middleware.py

AttributeError: 'module' object has no attribute 'get_user_from_cookie'

[Request] New Login with Facebook

Any change to move using the new Facebook API? Documentation seems pretty easy and I would love to see this as part of django-socialregistration workflow:

http://developers.facebook.com/docs/guides/web#login

Things I would like to see:

  • Extended permission (could set in settings.py which ones I need)
  • Make .js stuff work that it's easy to use same code with social objects (e.g. 'Like' box)
  • Support for Django 1.1.x <3

Any plans to support?

Using SocialRegistration with Pinax

I was attempting to integrate the this code with Pinax .72 but have been having some problems getting it to work. :(

I am runing pinax in a webfaction environment, and the Pinax I am using is running Django 1.1.1

I am able to successfully get the "Dev 0.2" version running with one exception, it will not work on safari on a mac. It will work on ie and safari on a pc, as well as on firefox/chrome on both mac and pc. However with Safari on a Mac, for some reason, facebook after going to the authentication popup, is not passing back the autentication properly or somehow the socialregistration isn't understanding it properly and showing the facebook.html template.

SO i decided I would try the master version/dev .4). When trying to use this version on all browsers, the authentication window will pop up from facebook, but the the cookies are for some reason not being passed back properly.

So I am wondering what changes do I have to make, the allow version dev .4 to be compatible with django 1.1.1 as I am assuming that is where the error is and I am still a n00b.

Thanks for any help.

openID issue

Hi,
I have successfully implement facebook login using django-socialregistration.

However I am having problems with OpenID.

I tried loggin in with my openID profile ( google profile ) , and I get redirected to
a url that does not belong to me.

What happens is that I will be requested to log in to Example.com,
when my domain is www.tabwish.com.

How do i fix this?

Thank you for your help!

I keep getting "Caught AttributeError while rendering: Please add the ``django.core.context_processors.request`` context processors to your settings.CONTEXT_PROCESSORS set"

I have a very basic view to test fb connect:

def fbtest(request):
    return render_to_response('fbtest.html',context_instance=RequestContext(request))

and I have

    TEMPLATE_CONTEXT_PROCESSORS = ('django.core.context_processors.request',)

in settings.py

What am I doing wrong? The documentation for this app is very limited as it provides no examples or demos of some sort.

KeyError at /socialregistration/setup/: socialregistration_user

Googlebot was traversing the site causing a fuzz. Some defensive-programming could be of help here?

Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
  87.                 response = middleware_method(request, callback, callback_args, callback_kwargs)
File "/project/config/middleware.py" in process_view
  122.         response = view_func(request, *view_args, **view_kwargs)
File "/packages/socialregistration/socialregistration/views.py" in setup
  53.                 request.session['socialregistration_user'],
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/base.py" in __getitem__
  46.         return self._session[key]

Exception Type: KeyError at /social/setup/
Exception Value: socialregistration_user

"maximum recursion depth exceeded" in views.py logout

views.py logout view contains:

def logout(request, redirect_url=None):
"""
Logs the user out of facebook and django.
"""

logout(request)

maybe i'm missing something but this will always fail with "maximum recursion depth exceeded".

Experiencing TemplateSyntaxError

Caught an exception while rendering: Tried xd_receiver in module myfirstapp.fbapp.views. Error was: 'module' object has no attribute 'xd_receiver'

1 <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script>
2 <script type="text/javascript">
3 FB_RequireFeatures(["XFBML"],
4 function() {
5 FB.Facebook.init("{{ facebook_api_key }}", "{% url facebook_xd_receiver %}")
6 }
7 );
8 function facebookConnect(form){
9 FB.Connect.requireSession();
10 FB.Facebook.get_sessionState().waitUntilReady(
11 function(){
12 form.submit();
13 }
14 );
15 }

'ModPythonRequest' object has no attribute 'facebook'

I'm able to set up a page for Facebook authentication. I see the Facebook button, click on it, and I'm taken to the Facebook Connect dialog. After logging in, I am returned to my site with the path "/djroot/accounts/facebook/login/". I get an Attribute Error on this page:

AttributeError at /accounts/facebook/login/
'ModPythonRequest' object has no attribute 'facebook'
...
Traceback

/var/lib/python-support/python2.5/django/core/handlers/base.py in get_response
86. response = callback(request, _callback_args, *_callback_kwargs)

/usr/lib/python2.5/site-packages/django_socialregistration-0.2-py2.5.egg/socialregistration/views.py in facebook_login
102. if not request.facebook.check_session(request):

I'm running Python 2.5.2 and Django 1.0. Any ideas?

facebook canvas/iframe support

i've modified middleware.py so that i can use socialregistration in facebook canvas/iframe.
with this change in middleware and call to facebook_login() socialregistration works in facebook canvas/iframe (some additional code is required to fix cookie problems in IE and Safari).
i was wondering if this code (or any code that works for facebook canvas/iframe) could eventually end in socialregistration?

class FacebookMiddleware(object):
def process_request(self, request):

    if 'session' in request.GET:
        session = request.GET.get('session')
        data = json.loads(session)
        request.facebook = Facebook(data)
        return None

    fb_user = facebook.get_user_from_cookie(request.COOKIES,
        settings.FACEBOOK_API_KEY, settings.FACEBOOK_SECRET_KEY)

    request.facebook = Facebook(fb_user)
    return None

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.