欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决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,不过我没有测试。