def connect_callback(provider): code = request.args.get("code") client = None user = None openid_type = config.OPENID_TYPE_DICT.get(provider) if not openid_type: abort(404, "not support such provider") if provider in [ config.OPENID_DOUBAN, config.OPENID_SINA, config.OPENID_RENREN, config.OPENID_INSTAGRAM, ]: if provider == config.OPENID_DOUBAN: client = Douban() elif provider == config.OPENID_SINA: client = SinaWeibo() elif provider == config.OPENID_RENREN: client = Renren() elif provider == config.OPENID_INSTAGRAM: client = Instagram() ## oauth2方式授权处理 try: token_dict = client.get_access_token(code) print "---token_dict", token_dict except OAuthError, e: log.warning(e) abort(400, u"从第三方获取access_token失败了,请重新尝试一下,抱歉:)") if not (token_dict and token_dict.get("access_token")): abort(400, "no_access_token") try: access_token = token_dict.get("access_token", "") refresh_token = token_dict.get("refresh_token", "") #the last is instagram case:) uid = token_dict.get("uid") or token_dict.get("user", {}).get("uid") \ or token_dict.get("user", {}).get("id") client.set_token(access_token, refresh_token) user_info = client.get_user_info(uid) print "---user_info", user_info, user_info.data except OAuthError, e: log.warning(e) abort(400, e.msg)
def connect_callback(provider): code = request.args.get("code") client = None user = None openid_type = config.OPENID_TYPE_DICT.get(provider) if not openid_type: abort(404, "not support such provider") if provider in [config.OPENID_DOUBAN, config.OPENID_SINA, config.OPENID_RENREN, config.OPENID_INSTAGRAM,]: if provider == config.OPENID_DOUBAN: client = Douban() elif provider == config.OPENID_SINA: client = SinaWeibo() elif provider == config.OPENID_RENREN: client = Renren() elif provider == config.OPENID_INSTAGRAM: client = Instagram() ## oauth2方式授权处理 try: token_dict = client.get_access_token(code) print "---token_dict", token_dict except OAuthError, e: log.warning(e) abort(400, u"从第三方获取access_token失败了,请重新尝试一下,抱歉:)") if not (token_dict and token_dict.get("access_token")): abort(400, "no_access_token") try: access_token = token_dict.get("access_token", "") refresh_token = token_dict.get("refresh_token", "") #the last is instagram case:) uid = token_dict.get("uid") or token_dict.get("user", {}).get("uid") \ or token_dict.get("user", {}).get("id") client.set_token(access_token, refresh_token) user_info = client.get_user_info(uid) print "---user_info", user_info except OAuthError, e: log.warning(e) abort(400, e.msg)