当前位置:首页 » 编程语言 » 微博登录php

微博登录php

发布时间: 2023-06-26 07:29:32

‘壹’ 用官网的php SDK做的微博登录API,登录后一直出现500错误,求解(下面是callback的代码)

500是服务端错误了

‘贰’ 如果用php语言获取新浪微博某一网址的源码

我试着用file_get_contents()来获取了一下,是能获取到源码的。

var_mp((file_get_contents('http://weibo.com/p/1005051893289714/')));

不过确实显示的如你说的那样,只有页面title显示为“Sina Visitor System”,但是这个时候,因为使用了var_mp()来打印,可以看到页面上还显示了:string(5405) ""。

这说明file_get_contents返回了还是比较多的内容,再来查看一下源代码,发现返回的是一些js语句,这些语句当然是不会显示在页面上的,里面还有外部js,那么你获得源码之后,因为js路径不对(它使用的是相对地址),所以也会引起js报错,而导致js没有运行:

<scripttype="text/javascript"src="/js/visitor/mini.js"></script>

正常情况下,我们打开http://weibo.com/p/1005051893289714/这个网页之后,看到的其实是这个js执行之后的跳转页面。

‘叁’ 如何获取新浪微博的登录参数

1、用Chrome的开发者工具或者Firefox的Firebug来进行抓包
找到login.php文件,就可以看到此文件的一些请求参数,

Request URL:

http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.22)
Request Method:

POST
Status Code:

200 OK
Request Headersview source
Accept:

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:

GBK,utf-8;q=0.7,*;q=0.3
Accept-Encoding:

gzip,deflate,sdch
Accept-Language:

zh-CN,zh;q=0.8
Cache-Control:

max-age=0
Connection:

keep-alive
Content-Length:

380
Content-Type:

application/x-www-form-urlencoded
Cookie:

Apache=00000073.8a4c255d.4fbcca08.3dec6e4b; SINAGLOBAL=00000073.8a51255d.4fbcca08.f60eaf69; U_TRS1=00000073.a032426f.4fbccf5b.de1e4686; U_TRS2=00000073.a044426f.4fbccf5b.84a48193; UOR=,www.sina.com.cn,; ULV=1337773919392:1:1:1:00000073.8a4c255d.4fbcca08.3dec6e4b:; SGUP=0; _s_upa=2; vjuids=1c9c46cf8.137798a2e07.0.baab928e; vjlast=1337773928; __utma=269849203.1663258918.1337773929.1337773929.1337773929.1; __utmb=269849203.1.10.1337773929; __utmc=269849203; __utmz=269849203.1337773929.1.1.utmcsr=login.sina.com.cn|utmccn=(referral)|utmcmd=referral|utmcct=/crossdomain2.php; ULOGIN_IMG=
Host:

login.sina.com.cn
Origin:

http://weibo.com
Referer:

http://weibo.com/
User-Agent:

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19
Query String Parametersview decoded
client:

ssologin.js(v1.3.22)
Form Dataview decoded
entry:

weibo
gateway:

1
from:
savestate:

0
useticket:

1
vsnf:

1
ssosimplelogin:

1
su:

bmlfd2Vpd2VpJTQwMTYzLmNvbQ%3D%3D
service:

miniblog
servertime:

1337774007
nonce:

WSFYJG
pwencode:

wsse
sp:


encoding:

UTF-8
prelt:

980
url:

http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack
returntype:

META
Response Headersview source
Cache-Control:

no-cache
Connection:

close
Content-Encoding:

gzip
Content-Length:

414
Content-Type:

text/html
Date:

Wed, 23 May 2012 11:53:30 GMT
P3P:

CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
Pragma:

no-cache
Server:

Apache
Set-Cookie:

SUE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.sina.com.cn, SUP=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.sina.com.cn, ALF=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.sina.com.cn, ALC=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=login.sina.com.cn, SUR=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.sina.com.cn, SSOLoginState=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.sina.com.cn
Vary:

Accept-Encoding
via_host:

38.62

2、用httpclient4.x登录新浪微博源码(转)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class SinaLogin {

private final static HttpClient client = new DefaultHttpClient();

/**
* 抓取网页
*
* @param url
* @throws IOException
*/
static String get(String url) throws IOException {
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();

String result = mp(entity);
get.abort();

return result;
}

/**
* 执行登录过程
*
* @param user
* @param pwd
* @param debug
* @throws IOException
*/
static void login(String user, String pwd) throws IOException {
HttpPost post = new HttpPost(
"http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.14)");
post.setHeader("User-Agent",
"Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0");
post.setHeader("Referer", "http://weibo.com/");
post.setHeader("Content-Type", "application/x-www-form-urlencoded");

// 登录表单的信息
List<NameValuePair> qparams = new ArrayList<NameValuePair>();
qparams.add(new BasicNameValuePair("entry", "miniblog"));
qparams.add(new BasicNameValuePair("gateway", "1"));
qparams.add(new BasicNameValuePair("from", ""));
qparams.add(new BasicNameValuePair("savestate", "0"));
qparams.add(new BasicNameValuePair("useticket", "1"));
qparams.add(new BasicNameValuePair("ssosimplelogin", "1"));
qparams.add(new BasicNameValuePair("service", "miniblog"));
// servertime=1309164392
// nonce=PJZCHM
// qparams.add(new BasicNameValuePair("pwencode", "wsse"));
qparams.add(new BasicNameValuePair("encoding", "utf-8"));
qparams.add(new BasicNameValuePair(
"url",
"http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack"));
qparams.add(new BasicNameValuePair("returntype", "META"));

qparams.add(new BasicNameValuePair("username", user));
qparams.add(new BasicNameValuePair("password", pwd));

UrlEncodedFormEntity params = new UrlEncodedFormEntity(qparams, "UTF-8");
post.setEntity(params);

// Execute the request
HttpResponse response = client.execute(post);
post.abort();
// 新浪微博登录没有301,302之类的跳转;而是返回200,然后用javascript实现的跳转
// int statusCode = response.getStatusLine().getStatusCode();
// if ((statusCode == HttpStatus.SC_MOVED_PERMANENTLY)
// || (statusCode == HttpStatus.SC_MOVED_TEMPORARILY)
// || (statusCode == HttpStatus.SC_SEE_OTHER)
// || (statusCode == HttpStatus.SC_TEMPORARY_REDIRECT)) {
// // 此处重定向处理 此处还未验证
// String newUri = response.getLastHeader("Location").getValue();
// get(newUri);
// }

// Get hold of the response entity
HttpEntity entity = response.getEntity();
// 取出跳转的url
// location.replace("http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&ticket=ST-MTkxODMxOTI0Nw==-1309224549-xd-&retcode=0");
String location = getRedirectLocation(mp(entity));
get(location);
}

private static String getRedirectLocation(String content) {
String regex = "location\\.replace\\(\'(.*?)\'\\)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);

String location = null;
if (matcher.find()) {
location = matcher.group(1);
}

return location;
}

/**
* 打印页面
*
* @param entity
* @throws IOException
*/
private static String mp(HttpEntity entity) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(
entity.getContent(), "utf8"));

//return EntityUtils.toString(entity);
return IOUtils.toString(br);
}

public static void main(String[] args) throws IOException {
login("username", "password");
String result = get("http://t.sina.com.cn/pub/tags");
System.out.println(result);
}
}

‘肆’ 新浪微博网站接入,怎么实现接入网站的

有一个代码,加进来就可以了,需要你程序员添加

‘伍’ php让用户使用新浪微博账号登录我的网站一般要保存那些参数到数据库

uid针对你的网站是固定的,access_token可以说不是固定的,但是有效期很长,他是用来确定用户授权的有效期,具体可参见官方文档。
access_token
用于调用access_token,接口获取授权后的access
token。
expires_in
access_token的生命周期,单位是秒数。
remind_in
access_token的生命周期(该参数即将废弃,开发者请使用expires_in)。
uid
,当前授权用户的UID。

热点内容
服务器怎么设置电脑远程端口 发布:2025-07-03 16:28:46 浏览:72
电信无线路由器官方密码是什么 发布:2025-07-03 16:25:00 浏览:773
空间只能申请访问 发布:2025-07-03 16:23:27 浏览:735
华硕天选2air配置如何选择 发布:2025-07-03 16:10:09 浏览:571
asp搜索源码 发布:2025-07-03 15:49:55 浏览:235
医美大数据库 发布:2025-07-03 15:47:07 浏览:357
c语言将二进制转化为十进制 发布:2025-07-03 15:32:47 浏览:988
c语言帮助文档 发布:2025-07-03 15:22:43 浏览:320
双端口存储器在情况下会发生读写冲突 发布:2025-07-03 15:12:54 浏览:271
快站数据库 发布:2025-07-03 14:45:44 浏览:40