V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ossicee
V2EX  ›  Django

100 快求 Django 后端的微信公众号授权登录 demo

  •  
  •   ossicee · 2017-11-06 11:09:34 +08:00 · 6196 次点击
    这是一个创建于 2577 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位好,想请各位帮忙写个以 Django 为后端的微信公众号 auth 授权登录的 demo

    因为基础比较差,我憋了几天都没憋出来。只能来 v2 求助了。

    100 块不多,只能在您点外面的时候多点几瓶可乐。多点一份菜,如果不够请讲。谢谢

    zanderzhg#gmail.com
    19 条回复    2017-11-07 09:57:52 +08:00
    ossicee
        1
    ossicee  
    OP
       2017-11-06 11:11:59 +08:00 via Android
    我也不知道行情。不够我可以加
    chen2016
        2
    chen2016  
       2017-11-06 11:17:43 +08:00 via Android
    参考自强学院的 django 教程
    ossicee
        3
    ossicee  
    OP
       2017-11-06 11:23:54 +08:00 via Android
    @chen2016 他这个我没找到微信公众号授权登录的例子
    liuzhedash
        4
    liuzhedash  
       2017-11-06 11:32:31 +08:00   ❤️ 1
    我不会 Django,但是这其实不是 100 块钱的事儿,因为 2 点:
    1、如果楼主没搞明白 oath 登陆的流程,需要先搞明白;否则即使花钱买了 demo,公众号变化或者其他环境变了也没法用
    2、如果楼主明白 oath 登陆的流程,那么需要仔细排查公众号的配置和 demo 是否能匹配,这个排查工作和技术没直接关系,也不适合外人做

    个人意见,仅供参考
    lyhapple
        5
    lyhapple  
       2017-11-06 11:33:18 +08:00
    才 100 块.
    ossicee
        7
    ossicee  
    OP
       2017-11-06 11:47:44 +08:00 via Android
    @liuzhedash 好的,谢谢,我再学习一下
    ossicee
        8
    ossicee  
    OP
       2017-11-06 11:48:01 +08:00 via Android
    @lyhapple 可以加的,我也不懂行情
    ossicee
        9
    ossicee  
    OP
       2017-11-06 11:48:16 +08:00 via Android
    @tinypig 谢谢您
    haonan3344
        10
    haonan3344  
       2017-11-06 11:58:37 +08:00
    楼主这是自掏腰包干工作呢,真是令人心情复杂啊
    Marmot
        11
    Marmot  
       2017-11-06 14:38:56 +08:00
    就是一个重定向到你自定义的链接,然后带一个 code (主要)和一些其他信息过来,然后你拿这个 code 去微信取信息,这一百块自己留着吧,都是菜鸟过来的。
    chengxiao
        12
    chengxiao  
       2017-11-06 15:28:52 +08:00
    已发邮件
    chenxipeng
        13
    chenxipeng  
       2017-11-06 15:30:50 +08:00
    @liuzhedash 说的很对
    SingeeKing
        14
    SingeeKing  
       2017-11-06 16:02:14 +08:00
    主要就是加一个 Authentication,通过 OpenID 登录

    然后使用 http://wechatpy.readthedocs.io/zh_CN/master/oauth.html#module-wechatpy.oauth
    SingeeKing
        15
    SingeeKing  
       2017-11-06 16:04:19 +08:00
    from .models import WeUser
    from django.contrib.auth.models import User


    class WechatOpenidAuth(object):
    def get_user(self, user_id):
    try:
    return User.objects.get(id=user_id)
    except User.DoesNotExist:
    return None

    def authenticate(self, openid=None):
    weus = WeUser.objects.filter(openID=openid, available=True)

    for weu in weus:
    if not weu.user.has_perm('settings.is_admin'):
    return weu.user
    return None




    def login(request):
    code = request.GET.get('code')
    next = request.GET.get('state', reverse('index'))
    we_auth_base = WeChatOAuth(app_id=settings.WECHAT_APP_ID, secret=settings.WECHAT_APP_SECRET,
    redirect_uri=request.build_absolute_uri(reverse('wechatLogin')),
    scope='snsapi_base',
    state=next)
    if not code:
    try:
    authorize_url = we_auth_base.authorize_url
    except Exception as e:
    logger.error(e)
    return redirect(reverse('login') + '?force=1')
    return redirect(authorize_url)
    try:
    r = we_auth_base.fetch_access_token(code)
    except Exception as e:
    logger.error(e)
    return redirect(reverse('login') + '?force=1')
    if r.get('errcode'):
    logger.error(r)
    return redirect(reverse('login') + '?force=1')

    open_id = r.get('openid')
    if log_in_with_open_id(request, open_id):
    messages.success(request, '登录成功')
    return redirect(next)
    else:
    return redirect(reverse('login') + '?force=1')
    ossicee
        16
    ossicee  
    OP
       2017-11-07 09:57:03 +08:00 via Android
    @SingeeKing 谢谢
    ossicee
        17
    ossicee  
    OP
       2017-11-07 09:57:25 +08:00 via Android
    @chengxiao 谢谢您
    ossicee
        18
    ossicee  
    OP
       2017-11-07 09:57:36 +08:00 via Android
    @Marmot 谢谢
    ossicee
        19
    ossicee  
    OP
       2017-11-07 09:57:52 +08:00 via Android
    @haonan3344 不是工作,就是想学习一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3574 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:46 · PVG 18:46 · LAX 02:46 · JFK 05:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.