当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 迷津,绝对迷津,我那个抓狂啊!求指点
帖子发表于 : 2011-03-23 22:44 
头像

注册: 2010-12-24 19:52
帖子: 217
送出感谢: 0 次
接收感谢: 0 次
新浪微博提供了Python语言的API,而我用c写的函数调用一个py的模块企图授权,但总是错误。而看起来PIN码是正确的传递过去了,但总是不行。

而用另一个py的文件来调用这个收权用的模块就可以。

我也做了很多猜测,但一一被试验否定了。

代码:
#-*-coding:utf-8-*-
#!/usr/bin/env python
'''login.py'''

import sys
sys.path.append('../wbAPI')
from weibopy.auth import OAuthHandler
from weibopy.api import API
consumer_key='3293249743'
consumer_secret='5b5d765dd4531b69be88aade2d22ec40'
auth=OAuthHandler(consumer_key,consumer_secret)
def get_url():
   auth_url = auth.get_authorization_url()
   print auth_url
   return auth_url

#

def authorize(pin):
   print "in py",pin

   auth.get_access_token(pin)
   api=API(auth)
   friendsmsg=api.friends_timeline(count=200,page=1)
   print friendsmsg[2].text
def getpin():
   pin=int(raw_input("PIN:"))
   authorize(pin)
   
#这个是用来测试的
if __name__=="__main__":
   get_url()
#   //pin=raw_input("pin:")
   getpin()
#   authorize(pin)


_________________
顶人一帖,胜造七级浮屠。。。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 迷津,绝对迷津,我那个抓狂啊!求指点
帖子发表于 : 2011-03-23 22:50 
头像

注册: 2010-12-24 19:52
帖子: 217
送出感谢: 0 次
接收感谢: 0 次
c++函数:
代码:
#include <python2.6/Python.h>
#include <iostream>
#include "header/callpython.h"      //这是一个自定义头文件,是下列函数的声明
using namespace std;

//几个产生python函数参数的函数
PyObject* create_para(int data)
{
   Py_Initialize();
   PyObject *pParm;
   pParm=PyTuple_New(1);
   PyTuple_SetItem(pParm,0,Py_BuildValue("i",data));
   return pParm;
}
PyObject* create_para(int nums,int data[])
{
   Py_Initialize();//要初始化python函数才能使用相关的函数
   PyObject *pParm;
   pParm=PyTuple_New(nums);
   int i=0;
   PyTuple_SetItem(pParm,0,Py_BuildValue("i",data[0]));
   for(;i<nums;i++)
   {
         PyTuple_SetItem(pParm,i,Py_BuildValue("i",data[i]));
   }
   return pParm;

}
PyObject* create_para(PyObject *p)
{
   Py_Initialize();
   PyObject *pParm;
   pParm=PyTuple_New(1);
   PyTuple_SetItem(pParm,0,Py_BuildValue("o",p));
   return pParm;
}
PyObject* create_para(int nums,char* data[])
{
   Py_Initialize();
   PyObject *pParm;
   pParm=PyTuple_New(nums);
   int i=0;
   for(;i<nums;i++)
   {
         PyTuple_SetItem(pParm,i,Py_BuildValue("s",data[i]));
   }
   return pParm;
}

//运行几个python单句,事实上,我可通过这个函数来授权
int runpy(int cnt,char* str[])
{
   Py_Initialize();
   if(!Py_IsInitialized())
   {
      cout<<"初始化失败!"<<endl;
      return -1;
   }
   for(int i=0;i<cnt;i++)
      PyRun_SimpleString(str[i]);
   return 0;
}
//调用python 函数的函数
int callpy(int flag,char *name,char* funcName,PyObject* para,struct result_py &py_return)
{
   PyObject *modelname,*model,*dict,*func,*pRetVal;
   Py_Initialize();//初始化python
   if(!Py_IsInitialized())
   {
      cout<<"初始化失败!"<<endl;
      return -1;
   }
   //导入sys模块,
   PyRun_SimpleString("import sys");
   PyRun_SimpleString("sys.path.append('./wbAPI')");          //这是我放自己写的模块的路径
   PyRun_SimpleString("sys.path.append('./pymodule')");   //这是新浪微波SDK的路径
   //导入python模块
   modelname=PyString_FromString(name);
   model=PyImport_Import(modelname);
   if(!model)
   {
      cout<<"找不到模块"<<name<<endl;
      return -1;
   }
   dict=PyModule_GetDict(model);
   if(!dict)
   {
      cout<<"获取字典失败!\n";
      return -1;
   }
   func=PyDict_GetItemString(dict,funcName);
   if(!func||!PyCallable_Check(func))
   {
      cout<<"函数无效"<<endl;
      return -1;
   }

   pRetVal=PyEval_CallObject(func,para);
//结构体result_py用来接受调用py函数的返回值,在头文件callpython中定义
//flag为返回值类型的标志,在callpython定义的宏
   if(flag==1)    //返回字符串
   {
      PyArg_Parse(pRetVal,"s",py_return.py_str);   
   }
   if(flag==0) //返回整数
      PyArg_Parse(pRetVal,"i",&py_return.py_int);
   if(flag==2)  //企图放回py的对象,没试过
      py_return.py_object=pRetVal;
   
   
   Py_Finalize();
   return 0;
   
}


_________________
顶人一帖,胜造七级浮屠。。。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译