我是Elgg的新手,我的要求是创建一个Elgg插件,用于从Gmail,Yahoo和MSN导入联系人。
我已经在Joomla中成功导入了联系人。当我创建一个Elgg插件和Oauth回拨的网址如invitefriends/gmailcallback
或甚至直接调用
mod/invitefriends/actions/gmailcallback.php
它不起作用。
在第一种情况下,它返回表单标记丢失我尝试动态添加表单标记,如下所示。
$ts = time();
elgg_register_action('invitefriends/gmailcallback',
TRUE,
elgg_get_plugins_path() . 'invitefriends/actions/gmailcallback.php?__elgg_token='.generate_action_token($ts).'&__elgg_ts='.$ts);
但仍然是同样的错误。
所以我试图直接访问模块文件它工作正常,但问题是我没有得到$_SESSION['oauth_token_secret']
会话变量没有得到,它在默认视图中设置并具有适当的值但无法使该会话在行动文件直接调用方法。
我不确定它是否符合Elgg标准,请建议我解决问题
提前致谢..
答案 0 :(得分:1)
请勿使用直接电话。第一件事:您正在使用已弃用的操作注册参数 - 更新您的电话。我假设你写的是Elgg 1.8或更高版本。
你以完全错误的方式添加动作令牌!它们是防止XSRF攻击所必需的,因此需要在URL生成时添加pe。对于elgg_register_action,您需要传递操作文件PATH,而不是URL。使用elgg_add_action_tokens_to_url
并阅读http://docs.elgg.org/wiki/Actions#Security
你应该得到具体的错误告诉你,但你没有提到它。