解决Openshift使用新浪OAuth库的Permission denied问题 博客分类: 个人独立博客计划技术笔记 openshiftoauthPermission deniedweibojava
程序员文章站
2024-03-03 00:00:46
...
在Openshift上使用新浪的库开发微博客户端,当调用oauth.getAccessTokenByCode(code);时报错:Permission denied。这个问题在前面的博客里面提到:http://tedeum.iteye.com/blog/1880767。
经过搜索研究,发现Openshift不支持绑定外网ip,端口转发也只限于安装rhc的电脑,而在新浪微博java api的代码中是这样写的:
Socket socket = socketfactory.createSocket(); SocketAddress localaddr = new InetSocketAddress(localAddress, localPort); SocketAddress remoteaddr = new InetSocketAddress(host, port); socket.bind(localaddr); socket.connect(remoteaddr, timeout); return socket;
跟踪调试,发现localAddress是null这就表示InetAddress.anyLocalAddress();也包括了外网地址,当注射相关代码行后,运行通过,注释后的代码如下:
Socket socket = socketfactory.createSocket(); // SocketAddress localaddr = new InetSocketAddress(localAddress, // localPort); SocketAddress remoteaddr = new InetSocketAddress(host, port); // socket.bind(localaddr); socket.connect(remoteaddr, timeout); return socket;
也只可以明确使用系统参数OPENSHIFT_INTERNAL_IP,替换本地IP,不过我没有测试。