1
ossicee OP 我也不知道行情。不够我可以加
|
2
chen2016 2017-11-06 11:17:43 +08:00 via Android
参考自强学院的 django 教程
|
4
liuzhedash 2017-11-06 11:32:31 +08:00 1
我不会 Django,但是这其实不是 100 块钱的事儿,因为 2 点:
1、如果楼主没搞明白 oath 登陆的流程,需要先搞明白;否则即使花钱买了 demo,公众号变化或者其他环境变了也没法用 2、如果楼主明白 oath 登陆的流程,那么需要仔细排查公众号的配置和 demo 是否能匹配,这个排查工作和技术没直接关系,也不适合外人做 个人意见,仅供参考 |
5
lyhapple 2017-11-06 11:33:18 +08:00
才 100 块.
|
6
tinypig 2017-11-06 11:35:05 +08:00 1
|
7
ossicee OP @liuzhedash 好的,谢谢,我再学习一下
|
10
haonan3344 2017-11-06 11:58:37 +08:00
楼主这是自掏腰包干工作呢,真是令人心情复杂啊
|
11
Marmot 2017-11-06 14:38:56 +08:00
就是一个重定向到你自定义的链接,然后带一个 code (主要)和一些其他信息过来,然后你拿这个 code 去微信取信息,这一百块自己留着吧,都是菜鸟过来的。
|
12
chengxiao 2017-11-06 15:28:52 +08:00
已发邮件
|
13
chenxipeng 2017-11-06 15:30:50 +08:00
@liuzhedash 说的很对
|
14
SingeeKing 2017-11-06 16:02:14 +08:00
主要就是加一个 Authentication,通过 OpenID 登录
然后使用 http://wechatpy.readthedocs.io/zh_CN/master/oauth.html#module-wechatpy.oauth |
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') |
16
ossicee OP @SingeeKing 谢谢
|
19
ossicee OP @haonan3344 不是工作,就是想学习一下
|