我刚刚下载了适用于iOS的Facebook SDK,因为我需要能够将自定义流发布到用户的Facebook源.示例应用程序有一个名为publishStream:(id)sender的方法,它似乎为"发布流"对话框设置了自定义描述,但是当我的对话框出现时,我看到的是一个空对话框,可以开始输入.示例中的代码应用是这样的:
`SBJSON*jsonWriter = [[SBJSON new] autorelease];
NSDictionary* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:
@"Always Running",@"text",@"http://itsti.me/",@"href", nil], nil];
NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks];
NSDictionary* attachment = [NSDictionary dictionaryWithObjectsAndKeys:
@"a long run", @"name",
@"The Facebook Running app", @"caption",
@"it is fun", @"description",
@"http://itsti.me/", @"href", nil];
NSString *attachmentStr = [jsonWriter stringWithObject:attachment];
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"Share on Facebook", @"user_message_prompt",
actionLinksStr, @"action_links",
attachmentStr, @"attachment",
nil];
[_app.facebook dialog:@"feed"
andParams:params
andDelegate:self];`
Run Code Online (Sandbox Code Playgroud)
这段代码应该填充自定义流吗?如果是这样,为什么演示项目不适合我呢?如果没有,为了使用自定义数据填充流,我需要采取哪些步骤?
谢谢你的帮助,
似乎如果我想转移到Nodejs中的"下一个"函数(可能还有Javascript)?我无法将参数传递给下一个函数.
这就是我的意思:
app.get('/webpage', SomeFunction, NextFunction);
function SomeFunction (req, res, next) {
// Do things
next();
}
function NextFunction (req, res) {
// Do other things
}
Run Code Online (Sandbox Code Playgroud)
现在,如果在SomeFunction我说它next(req, res);似乎不起作用.它永远不会到达方法.显然我不能直接传递参数......但我的问题是为什么?下一个函数如何知道要使用哪些参数?是因为它们被命名相同还是自动传递第一和第二参数?如果NextFunction使用blah, bleet而不是req, res它仍然有效?
我写了一个封装了一些 winsock 函数的类来模拟一个简单的 TCP 套接字以满足我的需要......
当我尝试运行一个简单的连接和发送数据到服务器测试时,“客户端”在调用连接时失败,错误代码为 10049 (WSAEADDRNOTAVAIL)连接功能在 MSDN
我正在做的是(下面的代码): 服务器:
客户
=> 连接调用失败,错误 10049,如上所述
这是包括“服务器”在内的主要功能:
HANDLE hThread = NULL;
Inc::CSocketTCP ServerSock;
Inc::CSocketTCP ClientSock;
try
{
ServerSock.Bind(L"", L"12345");
ServerSock.Listen(10);
//Spawn the senders-thread
hThread = (HANDLE)_beginthreadex(nullptr, 0, Procy, nullptr, 0, nullptr);
//accept
ServerSock.Accept(ClientSock);
//Adjust the maximum packet size
ClientSock.SetPacketSize(100);
//receive data
std::wstring Data;
ClientSock.Receive(Data);
std::wcout << "Received:\t" << Data << std::endl;
}
catch(std::exception& e) …Run Code Online (Sandbox Code Playgroud) 我有这样一个快速路线:
app.get('/', auth.authOrDie, function(req, res) {
res.send();
});
Run Code Online (Sandbox Code Playgroud)
其中authOrDie函数的定义(在我的auth.js模块中):
exports.authOrDie = function(req, res, next) {
if (req.isAuthenticated()) {
return next();
} else {
res.send(403);
}
});
Run Code Online (Sandbox Code Playgroud)
现在,当用户未经过身份验证时,我想验证http请求是否具有授权(基本)标头.为此,我想使用伟大的连接中间件basicAuth().
如您所知,Express建立在Connect之上,因此我可以使用express.basicAuth.
在basicAuth一般使用这样的:
app.get('/', express.basicAuth(function(username, password) {
// username && password verification...
}), function(req, res) {
res.send();
});
Run Code Online (Sandbox Code Playgroud)
但是,我想在我的authOrDie函数中使用它:
exports.authOrDie = function(req, res, next) {
if (req.isAuthenticated()) {
return next();
} else if {
// express.basicAuth ??? ******
} else {
res.send(403); …Run Code Online (Sandbox Code Playgroud) 我想解释一下Connect.sid cookie在Connect Node.js框架中如何工作。我注意到它们的格式像
s:hash.signature
Run Code Online (Sandbox Code Playgroud)
我不明白当哈希值超过了用于从内存存储或Redis存储访问会话数据的能力时,如何使用签名。
另外,我不理解为什么s:cookie中的甚至是。目的是什么
我听说签名用于“签名”哈希。“签名”或“签名”到底是什么意思?我还需要对此过程进行解释。
谢谢!
我正在尝试将一个reveal.js应用程序部署到Heroku.Reveal.js通过grunt connect命令在节点上运行.该应用程序还需要ruby来动态编译资产.在本地,我可以使用运行应用程序grunt serve.
最初,由于罗盘是一个依赖grunt watch,Heroku只检测到Gemfile并假设我正在运行一个ruby应用程序.我使用nodejs自定义buildpack强制Heroku将其视为nodejs应用程序.
Procfile包含
web: grunt serve
Run Code Online (Sandbox Code Playgroud)
日志显示
2013-06-17T13:51:56.187012+00:00 heroku[router]: at=error code=H14 desc="No web processes running"
Run Code Online (Sandbox Code Playgroud)
heroku ps什么也没显示.我可以成功运行"heroku run grunt serve",我已经修改了默认的Gruntfile.js以显示接受process.env ie
connect: {
server: {
options: {
port: process.env.PORT || 8000,
base: '.'
}
}
}
Run Code Online (Sandbox Code Playgroud)
作为最后一次尝试,我尝试使用Heroku-nodejs-grunt构建包(https://github.com/mbuchetics/heroku-buildpack-nodejs-grunt),它将在部署时运行grunt任务来编译资产.仍然没有运气,heroku logs --tail仍然显示没有进程在运行.探索heroku run显示grunt可用,并且grunt serve命令成功执行.
当开始使用新的grunt构建包时,我得到了一个错误,上面的Gruntfile.js说"进程"是未定义的.我将端口切换为0.
Web服务器将响应的端口.如果指定的端口已在使用中,则任务将失败.您可以使用特殊值0或'?' 使用系统分配的端口.
没有工作,尝试"?",没有工作(仍然没有网络进程,heroku restart没有做任何事情)
我无法弄清楚如何让Heroku使用grunt serve作为我的主要Web服务器进程!
使用Express,我可以使用Redis作为会话存储,如下所示:
var express = require('express');
var app = express();
var RedisStore = require('connect-redis')(express);
app.use(express.cookieParser());
app.use(express.session({
store: new RedisStore({
host: 'localhost',
port: 6379,
db: 'test',
pass: '123456'
}),
secret: '123456789'
}));
Run Code Online (Sandbox Code Playgroud)
但是对于Kraken,会话配置在文件中config/middleware.json.我将文件更改为使用connect-redis如下:
{
"middleware": {
"session": {
"module": "connect-redis",
"secret": "99b91c387e6e049308fc31d3cfff5fd3149e419c"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,Kraken确实使用Redis作为会话存储,但我怎么想传递Redis的选项(密码,主机,数据库名称......),就像Express一样?
我正在尝试使用AngularJS书籍(server.js)中的示例启动我的节点服务器.
var connect = require('connect');
connect.createServer(
connect.static("../angularjs")
).listen(5000);
Run Code Online (Sandbox Code Playgroud)
最初我得到"对象没有方法静态"所以我重新安装了connect include,现在当我这样做:node server.js我在CMD(Windows)中获得了一个闪烁的光标,并且从我的浏览器中获得了"Can not GET /".
有什么想法吗?
谢谢!
我正在尝试使用express-session和connect-redis来存储用户会话.目前,在用户登录后,我返回req.sessionID,然后每当用户想要向api的安全部分发出请求时,他/她必须提供会话ID.然后,身份验证中间件返回到redis并检查会话是否存在,如果存在,则将当前会话替换为存储在Redis中的会话.
function isLoggedIn(req, res, next){
var session_id = req.body.session_id;
if (!session_id){
res.send(401, {status: 0, message: "Not authorized"});
return;
}
console.log(req);
sessionStore.get(session_id, function(err, session){
if(err){
res.send(401, {status: 0, message: "Not authorized"});
return;
}
req.session = session;
req.sessionID = req.body.session_id;
return next();
});
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这个错误出现了:
/node_modules/express-session/index.js:269
req.session.touch();
^
TypeError: Object #<Object> has no method 'touch'
Run Code Online (Sandbox Code Playgroud)
我似乎无法在网上找到任何有这个错误的人,因为touch()是一个内置的功能来表达会话.请帮忙?我的快速会话版本是1.9.3.
我想将 Garmin Fenix3 中的活动自动导入数据库(无需手动下载 TCX 文件)。我想到了两个选项来解决这个任务:
一个基于服务器的应用程序,它连接到 Garmin Connect API 并在每次上传活动时由 GarminConnect 通知(通过 RESTful API) - 我的理解是否正确,对于这个用例,我需要 5,000 美元的昂贵 Garmin API 许可证?http://developer.garmin.com/garmin-connect-api/overview/
创建一个 Android 应用程序,每次创建新活动时,该应用程序都会收到已安装的 Garmin Android Connect 应用程序的通知 - 我该如何实现?根据我的理解,Connect IQ Mobile SDK For Android 可用于创建一个 Android 应用程序,该应用程序与您自己在 Garmin 设备上的应用程序进行交互(我的场景不需要,我只想自动“下载”创建的活动通过默认的 Fenix3 应用程序)。
任何帮助都非常感谢 - 谢谢。