class RenRen(object): def __init__(self): self.params = dict( v='1.0', format='json', call_id=0, page_id=PAGE_ID ) self.login_by_cookie() def get_access_token(self, code): params = dict( grant_type='authorization_code', client_id=APIKEY, redirect_uri=CALLBACK_URL, client_secret=SECRET, code=code ) return json.loads(n.post(ACCESS_TOKEN_URI, params)) def refresh(self, refresh_token): params = dict( grant_type='refresh_token', client_id=APIKEY, refresh_token=refresh_token, client_secret=SECRET ) return json.loads(n.post(ACCESS_TOKEN_URI, params)) def post_page(self, content, access_token): if isinstance(content, unicode): content = content.encode('u8') params = {} params.update(self.params) params.update(dict( access_token=access_token, status=content, method='status.set' )) ret = json.loads(n.post(API_SERVER, params)) return ret.get('result', 0) == 1 # 以下代码为非oauth授权用户的操作 _net = Net() def login_by_cookie(self, cookie=None): '''刷新cookie用的''' import re if cookie is None: cookie = '在chrome的js控制台,输入document.cookie出来的那个字符串,写在这里,注意前后无双引号' try: c = 'Cookie', cookie if c not in self._net.opener.addheaders: self._net.opener.addheaders.append(c) self._net.get('http://page.renren.com/601730243/admin') p = re.compile("get_check:'(.*)',get_check_x:'(.*)',env") h = self._net.get('http://page.renren.com/%s/fdoing' % PAGE_ID) result = p.search(h) self._token = { 'requestToken': result.group(1), '_rtk': result.group(2) } return self._token except: pass def send_msg(self, content): if isinstance(content, unicode): content = content.encode('u8') params = { 'pid': PAGE_ID, 'c': content } params.update(self._token) r = json.loads(self._net.post( 'http://page.renren.com/doing/update', params)) return r['code'] == 0
#CALLBACK_URL = 'http://localhost:8080/调试时候用的回调地址,注意修改人人应用里面的相应地方' # 获取Authorization Code 的URI AUTHORIZATION_URI = 'https://graph.renren.com/oauth/authorize' # 获取Access Token 的URI ACCESS_TOKEN_URI = 'https://graph.renren.com/oauth/token' # 人人API Session Key 资源URI SESSION_KEY_URI = 'https://graph.renren.com/renren_api/session_key' # 人人API Server URI API_SERVER = 'https://api.renren.com/restserver.do' # 授权地址 OAUTH_URL = '{0}?client_id={1}&redirect_uri={2}&response_type=code&scope=read_user_message+admin_page+publish_feed+status_update'.format(AUTHORIZATION_URI, APIKEY, CALLBACK_URL) # 主页id PAGE_ID = 601730243 n = Net() class RenRen(object): def __init__(self): self.params = dict( v='1.0', format='json', call_id=0, page_id=PAGE_ID ) self.login_by_cookie() def get_access_token(self, code): params = dict( grant_type='authorization_code',