新浪微博AppKey大全

合集下载

错误代码分享

错误代码分享

新浪微博分享错误代码解释10001:系统错误10002:服务端资源不可用10003:远程服务出错10005:该资源需要appkey拥有更高级的授权10006:缺少 source参数(appkey)10007:不支持的 MediaType (%s)10008:错误:参数错误,请参考API文档10009:任务过多,系统繁忙10010:任务超时10011:RPC错误10012:非法请求10013:不合法的微博用户10014:第三方应用访问api接口权限受限制10016:错误:缺失必选参数:%s,请参考API文档10017:错误:参数值非法,希望得到 (%s),实际得到 (%s),请参考API文档10018:请求长度超过限制10020:接口不存在10021:请求的HTTP METHOD不支持10022:IP请求超过上限10023:用户请求超过上限10024:用户请求接口%s超过上限10025:内部接口参数错误20001:IDS参数为空20002:uid参数为空20003:用户不存在20005:不支持的图片类型,仅仅支持JPG,GIF,PNG20006:图片太大20007:请确保使用multpart上传了图片20008:内容为空20009:id列表太长了20012:输入文字太长,请确认不超过140个字符20013:输入文字太长,请确认不超过300个字符20014:传入参数有误,请再调用一次20016:发微博太多啦,休息一会儿吧20017:你刚刚已经发送过相似内容了哦,先休息一会吧20019:不要太贪心哦,发一次就够啦20023:很抱歉,此功能暂时无法使用,如需帮助请联系@微博客服或者致电客服电话400 690 000020031:需要弹出验证码20032:微博发布成功。

目前服务器数据同步可能会有延迟,请耐心等待1-2分钟。

谢谢20033:登陆状态异常20101:不存在的微博20102:不是你发布的微博20103:不能转发自己的微博20109:微博 id为空20111:不能发布相同的微博20112:由于作者隐私设置,你没有权限查看此微博20114:标签名太长20115:标签不存在20116:标签已存在20117:最多200个标签20118:最多5个标签20119:标签搜索失败20120:由于作者设置了可见性,你没有权限转发此微博20121:visible参数非法20122:应用不存在20123:最多屏蔽200个应用20124:最多屏蔽500条微博20125:没有屏蔽过此应用20126:不能屏蔽新浪应用20127:已添加了此屏蔽20128:删除屏蔽失败20129:没有屏蔽任何应用20201:不存在的微博评论20203:不是你发布的评论20204:评论ID为空20206:作者只允许关注用户评论20207:作者只允许可信用户评论20401:域名不存在20402:verifier错误20403:屏蔽用户列表中存在此uid20404:屏蔽用户列表中不存在此uid20405:uid对应用户不是登录用户的好友20406:屏蔽用户个数超出上限20407:没有合适的uid20408:从feed屏蔽列表中,处理用户失败20501:错误:source_user 或者target_user用户不存在20502:必须输入目标用户id或者 screen_name 20503:关系错误,user_id必须是你关注的用户20504:你不能关注自己20505:加关注请求超过上限20506:已经关注此用户20507:需要输入验证码20508:根据对方的设置,你不能进行此操作20509:悄悄关注个数到达上限20510:不是悄悄关注人20511:已经悄悄关注此用户20512:你已经把此用户加入黑名单,加关注前请先解除20513:你的关注人数已达上限20522:还未关注此用户20523:还不是粉丝20601:列表名太长,请确保输入的文本不超过10个字符20602:列表描叙太长,请确保输入的文本不超过70个字符20603:列表不存在20604:不是对象所属者20605:列表名或描叙不合法20606:记录已存在20607:错误:数据库错误,请联系系统管理员20608:列表名冲突20610:目前不支持私有分组20611:创建list失败20612:目前只支持私有分组20613:错误:不能创建更多的列表20614:已拥有列表上下,请参考API文档20615:成员上线,请参考API文档20616:不支持的分组类型20617:最大返回300条20618:uid 不在列表中20701:不能提交相同的标签20702:最多两个标签20704:您已经收藏了此微博20705:此微博不是您的收藏20706:操作失败20801:trend_name是空值20802:trend_id是空值21001:标签参数为空21002:标签名太长,请确保每个标签名不超过14个字符21103:该用户已经绑定手机21104:verifier错误21105:你的手机号近期频繁绑定过多个帐号,如果想要继续绑定此帐号,请拨打客服电话400 690 0000申请绑定21108:原始密码错误21109:新密码错误21110:此用户暂时没有绑定手机21113:教育信息不存在21115:职业信息不存在21117:此用户没有qq信息21120:此用户没有微号信息21121:此微号已经存在21301:认证失败21302:用户名或密码不正确21303:用户名密码认证超过请求限制21304:版本号错误21305:缺少必要的参数21306:Oauth参数被拒绝21307:时间戳不正确21308:nonce参数已经被使用21309:签名算法不支持21310:签名值不合法21311:consumer_key不存在21312:consumer_key不合法21313:consumer_key缺失21314:Token已经被使用21315:Token已经过期21316:Token不合法21317:Token不合法21318:Pin码认证失败21319:授权关系已经被解除21320:不支持的协议21321:未审核的应用使用人数超过限制21322:重定向地址不匹配21323:请求不合法21324:client_id或client_secret参数无效21325:提供的Access Grant是无效的、过期的或已撤销的21326:客户端没有权限21327:token过期21328:不支持的 GrantType21329:不支持的 ResponseType21330:用户或授权服务器拒绝授予数据访问权限21331:服务暂时无法访问21332:access_token 无效21333:禁止使用此认证方式其他的错误代码:304 Not Modified: 没有数据返回.400 Bad Request: 请求数据不合法,或者超过请求频率限制. 详细的错误代码如下:o 40028:内部接口错误(如果有详细的错误信息,会给出更为详细的错误提示)o 40033:source_user或者target_user用户不存在o 40031:调用的微博不存在o 40036:调用的微博不是当前用户发布的微博o 40034:不能转发自己的微博o 40038:不合法的微博o 40037:不合法的评论o 40015:该条评论不是当前登录用户发布的评论o 40017:不能给不是你粉丝的人发私信o 40019:不合法的私信o 40021:不是属于你的私信o 40022:source参数(appkey)缺失o 40007:格式不支持,仅仅支持XML或JSON格式o 40009:图片错误,请确保使用multipart上传了图片o 40011:私信发布超过上限o 40012:内容为空o 40016:微博id为空o 40018:ids参数为空o 40020:评论ID为空o 40023:用户不存在o 40024:ids过多,请参考API文档o 40025:不能发布相同的微博o 40026:请传递正确的目标用户uid或者screen nameo 40045:不支持的图片类型,支持的图片类型有JPG,GIF,PNG o 40008:图片大小错误,上传的图片大小上限为5Mo 40001:参数错误,请参考API文档o 40002:不是对象所属者,没有操作权限o 40010:私信不存在o 40013:微博太长,请确认不超过140个字符o 40039:地理信息输入错误o 40040:IP限制,不能请求该资源o 40041:uid参数为空o 40042:token参数为空o 40043:domain参数错误o 40044:appkey参数缺失o 40029:verifier错误o 40027:标签参数为空o 40032:列表名太长,请确保输入的文本不超过10个字符o 40030:列表描述太长,请确保输入的文本不超过70个字符o 40035:列表不存在o 40053:权限不足,只有创建者有相关权限o 40054:参数错误,请参考API文档o 40059: 插入失败,记录已存在o 40060:数据库错误,请联系系统管理员o 40061:列表名冲突o 40062:id列表太长了o 40063:urls是空的o 40064:urls太多了o 40065:ip是空值o 40066:url是空值o 40067:trend_name是空值o 40068:trend_id是空值o 40069:userid是空值o 40070:第三方应用访问api接口权限受限制o 40071:关系错误,user_id必须是你关注的用户o 40072:授权关系已经被删除o 40073:目前不支持私有分组o 40074:创建list失败o 40075:需要系统管理员的权限o 40076:含有非法词o 40084:提醒失败,需要权限o 40082:无效分类!o 40083:无效状态码o 40084:目前只支持私有分组401 Not Authorized: 没有进行身份验证.o 40101 version_rejected Oauth版本号错误o 40102 parameter_absent Oauth缺少必要的参数o 40103 parameter_rejected Oauth参数被拒绝o 40104 timestamp_refused Oauth时间戳不正确o 40105 nonce_used Oauth nonce参数已经被使用o 40106 signature_method_rejected Oauth签名算法不支持o 40107 signature_invalid Oauth签名值不合法o 40108 consumer_key_unknown! Oauth consumer_key不存在o 40109 consumer_key_refused! Oauth consumer_key不合法o 40110 token_used! Oauth Token已经被使用o 40111 Oauth Error: token_expired! Oauth Token已经过期o 40112 token_revoked! Oauth Token不合法o 40113 token_rejected! Oauth Token不合法o 40114 verifier_fail! Oauth Pin码认证失败402 Not Start mblog: 没有开通微博403 Forbidden: 没有权限访问对应的资源.o 40301 too many lists, see doc for more info 已拥有列表上限o 40302 auth faild 认证失败o 40303 already followed 已经关注此用户o 40304 Social graph updates out of rate limit 发布微博超过上限o 40305 update comment out of rate 发布评论超过上限o 40306 Username and pwd auth out of rate limit 用户名密码认证超过请求限制o 40307 HTTP METHOD is not suported for this request 请求的HTTP METHOD不支持o 40308 Update weibo out of rate limit 发布微博超过上限o 40309 password error 密码不正确o 40314 permission denied! Need a high level appkey 该资源需要appkey拥有更高级的授权404 Not Found: 请求的资源不存在.500 Internal Server Error: 服务器内部错误.502 Bad Gateway: 微博接口API关闭或正在升级 .503 Service Unavailable: 服务端资源不可用.【人人网分享错误代码大全】<1> 一个未知的错误发生<2> 服务临时不可用<3> 未知的方法<4> 应用已达到设定的请求上限<5> 请求来自未经授权的IP地址<6> 当前用户session key过期了(已过期)<7> rest api调用次数超过了限制<100> 无效未知参数<101> 无效的API_KEY<102> 无效的SESSION_KEY<103> 必须是POST提交<104> 无效的签名<200> USER PERMISSIONS ERRORS<210> API_EC_PERMISSION_USER<220> API_EC_PERMISSION_ALBUM<221> <API_EC_PERMISSION_PHOTO><450> 当前用户的sessionKey过期<451> Session key specified cannot be used to call this method<452> Session key 无效. 可能传入的sessionKey格式出现错误<453> 调用此方法时,session key 是一个必须的参数<2000> 没有得到auth_token<2001> token对象中没有得到userId<2002> 用户没有登录校内网<10000> 登录失败<10201> API_EC_REST_LACKO_API_KEY<10202> API_EC_REST_LACKOF_SESSION_KEY<10203> API_EC_REST_LACKOF_CALL_ID<10600> 此接口的调用规则是: 48小时之内,一个用户最多可以调用10次<10601> Feed标题模板是无效的,标题模板中必须含有 \"{actor}\" 变量,且只含有一个<10602> 文本空,显示内容应该在30个字符之内<10603> if {target} is used, then target_ids becomes a required parameter<10604> title_data 参数不是一个有效的JSON 格式数组<10605> Feed的标题模板缺少必须的参数,或者title_data JSON数组定义的参数不完全。

新浪微博第三方联合认证信息申请表朱振华

新浪微博第三方联合认证信息申请表朱振华
新浪微博第三方联合认证信息统计表
网站名称
网址
网站所属领域
(如摄影图片、财经、教育培训、医疗、模特、音乐、问答等)
新浪微博AppKey
认证说明文字ห้องสมุดไป่ตู้
(必须包括网站名称)
认证用户行业分类
参考:/verify/apply?pageid=person&pagefr=info
预期人数
用户认证的标准
网站联系人
联系电话
邮箱
产品经理
联系电话
邮箱
备注:
1)认证说明类型即用户的认证说明如何定义。目前已经合作认证的网站认证说明案例有:淘宝淘女郎,认证说明文案为“淘女郎认证”;知乎,认证说明文案为“知乎xx领域优秀回答者”
2)认证标准即说明网站中哪些用户可以进行微博认证,认证的标准是什么。最后并请列举几个网站典型用户的个人页面地址及微博地址。

新浪微博AppKey大全!

新浪微博AppKey大全!

新浪微博AppKey大集合:IPhone,IPAD,Android,Google,Baidu应有尽有:如果有一天,你和新浪微博扯上关系,或者想玩转新浪微博的“来自”尾巴,那就到这来找吧:小米手机App Key:xiaomiApp Secret:3MqAdNoRLHomm4AECoURl7gds1sUIjunPanda.memoApp Key:31641035App Secret:6a7c98c1eef2109622d0a08199a35bef周博通微博管家App Key:202088835App Secret:9567e3782151dcfd1a9bd2dd099d957fAndroid平板客户端App Key:2540340328App Secret:886cfb4e61fad4e4e9ba9dee625284ddGoogle.NexusApp Key:1206405345App Secret:fa6095e113cd28fde6e14c7b7145c5c5Spring微博.AndroidApp Key:1905839263App Secret:36b51c6ebf2dd3e5361f80f6c4506267Acer平板电脑App Key:783190658App Secret:7f63ae9eb3c1438e9f8932748ca8a341iphone客户端App Key:5786724301App Secret:5Jao51NF1i5PDC91hhI3ID86ucoDtn4Capp梦工厂微博App Key:569452181App Secret:bbd573c3052999adcd026cbf88ffbf8eFIT随享.iPhone版App Key:31024382App Secret:25c3e6b5763653d1e5b280884b45c51fiPad客户端App Key:2849184197App Secret:7338acf99a00412983f255767c7643d0iPhone微博助手App Key:2702428363App Secret:82d9b7c386000b0de0711a20f146fa44Weico.Android版App Key:211160679App Secret:63b64d531b98c2dbff2443816f274dd3weico.iphone版App Key:82966982App Secret:72d4545a28a46a6f329c4f2b1e949e6a联想乐Pad客户端App Key:2440435914App Secret:70dc2ae26780817793c9c533092171dd摩托罗拉XOOMApp Key:2190063733App Secret:9222f119671ebf566b74220768014afd三星GalaxySApp Key:3442868347App Secret:07b27d2c098eda5eec681abdde832a51android手机App Key:androidApp Secret:5l0WXnhiY4pJ794KIJ7Rw5F45VXg9sjo黑莓客户端App Key:blackberryApp Secret:ivij24vyWpP0zE0M03r56RL2u8nu0L66三星GalaxyTabApp Key:sxtabApp Secret:6b2BhcdpiCdyZaIh4O3S1zHAUoC6Zpql三星Android智能手机客户端App Key:sxandroidApp Secret:tYQO8S1RndCGgI3qNbiCEjG3cVaeOvq7htcApp Key:htcApp Secret:ybQv5D6BC2bIOqYV2wCsIs0dX9vV0xIGSonyXperaApp Key:x10App Secret:rPVsSGvnz8erJ7w8sIICKEE70wQMRswUMotoApp Key:me511App Secret:5AgbUpV7fL2APXOkI04QnRhlGUdUlwy0乐phoneApp Key:lpApp Secret:5EmMeHqPOYsLSQ2zjrdXHoUhqtD4QYGx魅族M9App Key:meizu_m9App Secret:WQnVIAWDBmR9XV86YNAO97P3Xgk21az9S60手机App Key:s60App Secret:AbLmkn77N8j72iyE2Aup5RoRN8C0M3E5天翼3G互联网手机App Key:tianyiApp Secret:DX2eXTXpGhnTeSoMcJs2BCpXQQKyzehfTCL互联网手机App Key:tclApp Secret:gPvIKBER6kF2wAe6POQF9mTL1W9I9Y8C中兴手机App Key:zhongxingApp Secret:sc2GRZT16abrHaUps2cydiQKvWizy8IE华为手机App Key:huaweiApp Secret:QUoQoFbH7LVmuCBhEwMKzC65R1JZDX0t我的天语手机K-TouchApp Key:k_touchApp Secret:7d125GronKUP1rcgkOb8rqVjh2Q44fdx我的K-Touch天语W700App Key:tyw700App Secret:nj3PK1AvukNAwXihZZg9PN6H文明用语b5QQb我的酷派大观9930App Key:yulongApp Secret:9qCZ3L9riYQRz4FznnwUGrv2uPjqBGEm我的coolpad酷派终端App Key:coolpadApp Secret:SuQmVobcpJxaNZRThXR4xsytbHUMOdFBandroid5l0WXnhiY4pJ794KIJ7Rw5F45VXg9sjo=========================================hong_androidd6YLHfS5dfdB2YcNDOpt97Zvqav20orv=========================================iphone5Jao51NF1i5PDC91hhI3ID86ucoDtn4C=========================================galaxy_sRXZstlbVx7384oNWkeMWamsSEwfeEgii=========================================htcybQv5D6BC2bIOqYV2wCsIs0dX9vV0xIGx10rPVsSGvnz8erJ7w8sIICKEE70wQMRswU=========================================me5115AgbUpV7fL2APXOkI04QnRhlGUdUlwy0=========================================meizu_m9WQnVIAWDBmR9XV86YNAO97P3Xgk21az9=========================================xiaomi3MqAdNoRLHomm4AECoURl7gds1sUIjun========================================= dellpadz9UbGHARtNkPZbZvLIw8UvVZlTOtVfHs========================================= lp5EmMeHqPOYsLSQ2zjrdXHoUhqtD4QYGx=========================================sxtab6b2BhcdpiCdyZaIh4O3S1zHAUoC6Zpql=========================================sxandroidtYQO8S1RndCGgI3qNbiCEjG3cVaeOvq7=========================================s60AbLmkn77N8j72iyE2Aup5RoRN8C0M3E5========================================= blackberryivij24vyWpP0zE0M03r56RL2u8nu0L66=========================================tianyiDX2eXTXpGhnTeSoMcJs2BCpXQQKyzehf========================================= tclgPvIKBER6kF2wAe6POQF9mTL1W9I9Y8C=========================================huaweiQUoQoFbH7LVmuCBhEwMKzC65R1JZDX0t=========================================coolpadSuQmVobcpJxaNZRThXR4xsytbHUMOdFB=========================================tyw700nj3PK1AvukNAwXihZZg9PN6Hcaob5QQb=========================================yulong9qCZ3L9riYQRz4FznnwUGrv2uPjqBGEm=========================================k_touch7d125GronKUP1rcgkOb8rqVjh2Q44fdx=========================================zhongxingsc2GRZT16abrHaUps2cydiQKvWizy8IE=========================================1.以下App Key和App Secret适合修改于第三方客户端(例如Yibo,Weico) =========================================yibo3105114937985e8f106a5db148d1a96abfabcd9043========================================= 联想乐pad244043591470dc2ae26780817793c9c533092171dd========================================= Spring微博.Android190583926336b51c6ebf2dd3e5361f80f6c4506267=========================================摩托罗拉xoom21900637339222f119671ebf566b74220768014afd=========================================weico.android21116067963b64d531b98c2dbff2443816f274dd3=========================================app梦工厂微博569452181bbd573c3052999adcd026cbf88ffbf8e=========================================微博助手270242836382d9b7c386000b0de0711a20f146fa44========================================= FIT随享微博3102438225c3e6b5763653d1e5b280884b45c51f=========================================宏基acer7831906587f63ae9eb3c1438e9f8932748ca8a341========================================= Android平板2540340328886cfb4e61fad4e4e9ba9dee625284dd========================================= weico.iphone8296698272d4545a28a46a6f329c4f2b1e949e6a========================================= ipad客户端28491841977338acf99a00412983f255767c7643d0=========================================微博物语iphone2735371158fa2318d3281101f0c9b1be38f499dda4========================================= PushBox_iPad196572674555377ca138fa49b63b7767778ca1fb5a=========================================微格iPhone客户端20277615705042214816d14b2d9e8ae8255f96180d========================================= weicoPro232354707116ed80cc77fea11f7f7e96eca178ada3=========================================PoMe微博杂志213557699537b190bebb816c11c0bd1f996a7ca49f========================================= ArmingWeibo26127676074f988ffd2fba40eaab89dc4aa4c5389d========================================= GIF快手91534551588b51e31ddbe926089706e4500c55d2d=========================================美图秀秀4229079448bc58f8c7179369d4bfa914656c161b15=========================================三星GalaxyTab3510766076f97dfdd530d85eaaee45e63ee47445a3========================================= WeicoGIF1078446352c698c95df62b060734d3d0a9e8787a9a=========================================围脖Call1008696810bd464ae2cee0e5d7234a12d06c9476ff========================================= webOS12626736996185cf040b403dfa35de9678b5e35baf。

第三方登录QQ登录人人网登录新浪微博登录

第三方登录QQ登录人人网登录新浪微博登录

第三⽅登录QQ登录⼈⼈⽹登录新浪微博登录⽹站有⾃⼰的账号系统,这⾥使⽤的第三⽅登录仅仅是获取第三⽅账号的唯⼀id,昵称,性别进⾏本⽹站的⾃动注册。

⾃⾏到QQ,⼈⼈⽹和新浪微博的开发平台申请并获得对应的appqq:sina:⼈⼈:在做⼈⼈⽹的连接时审核了3次才通过:引⼊qq的js<script type="text/javascript" src="/qzone/openapi/qc_loader.js" data-appid="你申请的id" charset="utf-8"></script><script type="text/javascript" src="/qzone/openapi/qc_loader.js" charset="utf-8" data-callback="true"></script>不需要按照官⽹的做法,登录的做法也不过是跳转的⼀个链接⽽已,改为⾃⼰相应的参数就可以:<tr><td align="right" style="font-size:12px;">其他⽅式:</td><td class="loginap"><% string href1 = "_" + url + "&response_type=token&scope=all";string href2 = "/oauth/grant?client_id=你申请的id&redirect_uri=/Login.aspx?type=rr_true_" + url.Replace("?","%3F") + "&response_type=code&display=page&secure=true&origin=00000 string href3 = "https:///oauth2/authorize?client_id=你申请的id&redirect_uri=/Login.aspx?type=sina_true_" + url + "&response_type=code&state=2";%><a href="<%=href1 %>" class="qqicon" title="QQ登录"></a><a href="<%=href2 %>" class="rricon" title="⼈⼈登录"></a><a href="<%=href3 %>" class="sinaicon" title="新浪登录"></a></td></tr>获取信息并注册:<script type="text/javascript">var code = "<%=code %>";var error = "<%=error %>";var type = "<%=type %>";if (type == "qq") {//从页⾯收集OpenAPI必要的参数。

Weibo_Android_SDK使用手册

Weibo_Android_SDK使用手册

上图“ZIP”按钮,下载后解压缩可得到开发工具包。开发工具主要包含: Weibo.sdk.android.api(封装 Weibo.api 接口) Weibo.sdk.android.sso.demo(使用 sso 一个 Demo,包含调用 weibo.api 接口) Weibo.sdk.android.sso(基于 weibo.sdk.android 扩展的 sso 源码) Weibo.sdk.android(OAuth2.0 封装源码) Android 平台微博 SDK 说明文档(建议下载,方便开发) Weibo.sdk.android.sso.jar(必须下载,该 jar 封装了 weibo.api 和 sso 相关方法) 开发工具下载地址: 3. 搭建开发环境 环境需求:JDK+SDK+IDE(Eclipse)+ Weibo.sdk.android.sso.jar 此处基于 Weibo.sdk.android.sso.demo 为例。可以类比新建项目。 1) 在 Eclipse 中右键选择 Import,选择 Existing Projects into Workspace,从中 选 择 weibo.sdk.android.sso.demo 项 目 所 在 位 置 。 导 入 结 果 如 下 图 所 示 :
配置授权回调页 授权回调页是为 OAuth2.0 认证机制中的登陆认证地址,用户登录完成后最后悔跳 转此地址。 须在应用中配置次跳转地址才能使用 SDK 完成用户登录。 授权回调页查看及 设置地址: 第三方应用主页应用信息高级信息OAuth2.0 授权设置。 如下图所示: 2)
注:在使用 SDK 时,配置授权毁掉也是必不可少的,若没有配置,则登陆完成后无 法检测到授权地址,就无法获取授权的 Token 等信息。此地址并非必须配置成能访问地 址,保证格式正确即可。 2. 下载 Android 终端开发工具包 在 新 浪 微 博 开 放 平 台 文 档 一 页 有 SDK 下 载 一 项 , 找 到 IOS SDK 下 载 链 接 https:///mobileresearch/weibo_android_sdk/downloads ,打开后可打包 下载。

ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录

ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录

不管是腾讯还是新浪,查看他们的API,PHP都是有完整的接口,但对C#支持似乎都不是那么完善,都没有,腾讯是完全没有,新浪是提供第三方的,而且后期还不一定升级,NND,用第三方的动辄就一个类库,各种配置还必须按照他们约定的写,烦而且乱,索性自己写,后期的扩展也容易,看过接口后,开始以为很难,参考了几个源码之后发现也不是那么难,无非是GET或POST请求他们的接口获取返回值之类的,话不多说,这里只提供几个代码共参考,抛砖引玉了。

我这个写法的特点是,用到了Session,使用对象实例化之后调用Login() 跳转到登录页面,在回调页面调用Callback() 执行之后,可以从Session也可以写独立的函数(如:GetOpenID())中获取access_token或用户的唯一标识,以方便做下一步的操作。

所谓绑定就是把用户的唯一标识取出,插入数据库,和帐号绑定起来。

1.首先是所有OAuth类的基类,放一些需要公用的方法public abstract class BaseOAuth{&nbsp; public HttpRequest Request = HttpContext.Current.Request;&nbsp; public HttpResponse Response = HttpContext.Current.Response;&nbsp; public HttpSessionState Session = HttpContext.Current.Session;&nbsp; public abstract void Login();&nbsp; public abstract string Callback();&nbsp; #region 内部使用函数&nbsp; /// &lt;summary&gt;&nbsp; /// 生成唯一随机串防CSRF攻击&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;&nbsp; protected string GetStateCode()&nbsp; {&nbsp; &nbsp; Random rand = new Random();&nbsp; &nbsp; string data = DateTime.Now.ToString("yyyyMMddHHmmssffff") + rand.Next(1, 0xf423f).ToString();&nbsp; &nbsp; MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();&nbsp; &nbsp; byte[] md5byte = puteHash(UTF8Encoding.Default.GetBytes(data));&nbsp; &nbsp; return BitConverter.ToString(md5byte).Replace("-", "");&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// GET请求&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;param name="url"&gt;&lt;/param&gt;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;&nbsp; protected string GetRequest(string url)&nbsp; {&nbsp; &nbsp; HttpWebRequest httpWebRequest = .WebRequest.Create(url) asHttpWebRequest;&nbsp; &nbsp; httpWebRequest.Method = "GET";&nbsp; &nbsp; httpWebRequest.ServicePoint.Expect100Continue = false;&nbsp; &nbsp; StreamReader responseReader = null;&nbsp; &nbsp; string responseData;&nbsp; &nbsp; try&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; responseReader = new StreamReader(httpWebRequest.GetResponse().GetResponseStream());&nbsp; &nbsp; &nbsp; responseData = responseReader.ReadToEnd();&nbsp; &nbsp; }&nbsp; &nbsp; finally&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; httpWebRequest.GetResponse().GetResponseStream().Close();&nbsp; &nbsp; &nbsp; responseReader.Close();&nbsp; &nbsp; }&nbsp; &nbsp; return responseData;&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// POST请求&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;param name="url"&gt;&lt;/param&gt;&nbsp; /// &lt;param name="postData"&gt;&lt;/param&gt;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;&nbsp; protected string PostRequest(string url, string postData)&nbsp; {&nbsp; &nbsp; HttpWebRequest httpWebRequest = .WebRequest.Create(url) as HttpWebRequest;&nbsp; &nbsp; httpWebRequest.Method = "POST";&nbsp; &nbsp; httpWebRequest.ServicePoint.Expect100Continue = false;&nbsp; &nbsp; httpWebRequest.ContentType = "application/x-www-form-urlencoded";&nbsp; &nbsp; //写入POST参数&nbsp; &nbsp; StreamWriter requestWriter = new StreamWriter(httpWebRequest.GetRequestStream());&nbsp; &nbsp; try&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; requestWriter.Write(postData);&nbsp; &nbsp; }&nbsp; &nbsp; finally&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; requestWriter.Close();&nbsp; &nbsp; }&nbsp; &nbsp; //读取请求后的结果&nbsp; &nbsp; StreamReader responseReader = null;&nbsp; &nbsp; string responseData;&nbsp; &nbsp; try&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; responseReader = new StreamReader(httpWebRequest.GetResponse().GetResponseStream());&nbsp; &nbsp; &nbsp; responseData = responseReader.ReadToEnd();&nbsp; &nbsp; }&nbsp; &nbsp; finally&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; httpWebRequest.GetResponse().GetResponseStream().Close();&nbsp; &nbsp; &nbsp; responseReader.Close();&nbsp; &nbsp; }&nbsp; &nbsp; return responseData;&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// 解析JSON&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;param name="strJson"&gt;&lt;/param&gt;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;&nbsp; protected NameValueCollection ParseJson(string strJson)&nbsp; {&nbsp; &nbsp; NameValueCollection mc = new NameValueCollection();&nbsp; &nbsp; Regex regex = new Regex(@"(\s*\bsp; }&nbsp; &nbsp; foreach (Match m in regex.Matches(strJson))&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; mc.Add(m.Groups[2].V alue, m.Groups[3].Value);&nbsp; &nbsp; }&nbsp; &nbsp; return mc;&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// 解析URL&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;param name="strParams"&gt;&lt;/param&gt;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;&nbsp; protected NameValueCollection ParseUrlParameters(string strParams)&nbsp; {&nbsp; &nbsp; NameValueCollection nc = new NameValueCollection();&nbsp; &nbsp; foreach (string p in strParams.Split('&amp;'))&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; string[] ps = p.Split('=');&nbsp; &nbsp; &nbsp; nc.Add(ps[0], ps[1]);&nbsp; &nbsp; }&nbsp; &nbsp; return nc;&nbsp; }&nbsp; #endregion}2.QQ的OAuth类public class QQOAuth : BaseOAuth{&nbsp; public string AppId = ConfigurationManager.AppSettings["OAuth_QQ_AppId"];&nbsp; public string AppKey = ConfigurationManager.AppSettings["OAuth_QQ_AppKey"];&nbsp; public string RedirectUrl = ConfigurationManager.AppSettings["OAuth_QQ_RedirectUrl"];&nbsp; public const string GET_AUTH_CODE_URL = "https:///oauth2.0/authorize";&nbsp; public const string GET_ACCESS_TOKEN_URL = "https:///oauth2.0/token";&nbsp; public const string GET_OPENID_URL = "https:///oauth2.0/me";&nbsp; /// &lt;summary&gt;&nbsp; /// QQ登录,跳转到登录页面&nbsp; /// &lt;/summary&gt;&nbsp; public override void Login()&nbsp; {&nbsp; &nbsp; //-------生成唯一随机串防CSRF攻击&nbsp; &nbsp; string state = GetStateCode();&nbsp; &nbsp; Session["QC_State"] = state; //state 放入Session&nbsp; &nbsp; string parms = "?response_type=code&amp;"&nbsp; &nbsp; &nbsp; + "client_id=" + AppId + "&amp;redirect_uri=" + Uri.EscapeDataString(RedirectUrl) + "&amp;state=" + state;&nbsp; &nbsp; string url = GET_AUTH_CODE_URL + parms;&nbsp; &nbsp; Response.Redirect(url); //跳转到登录页面&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// QQ回调函数&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;param name="code"&gt;&lt;/param&gt;&nbsp; /// &lt;param name="state"&gt;&lt;/param&gt;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;&nbsp; public override string Callback()&nbsp; {&nbsp; &nbsp; string code = Request.QueryString["code"];&nbsp; &nbsp; string state = Request.QueryString["state"];&nbsp; &nbsp; //--------验证state防止CSRF攻击&nbsp; &nbsp; if (state != (string)Session["QC_State"])&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; ShowError("30001");&nbsp; &nbsp; }&nbsp; &nbsp; string parms = "?grant_type=authorization_code&amp;"&nbsp; &nbsp; &nbsp; + "client_id=" + AppId + "&amp;redirect_uri=" + Uri.EscapeDataString(RedirectUrl)&nbsp; &nbsp; &nbsp; + "&amp;client_secret=" + AppKey + "&amp;code=" + code;&nbsp; &nbsp; string url = GET_ACCESS_TOKEN_URL + parms;&nbsp; &nbsp; string str = GetRequest(url);&nbsp; &nbsp; if (str.IndexOf("callback") != -1)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; int lpos = str.IndexOf("(");&nbsp; &nbsp; &nbsp; int rpos = str.IndexOf(")");&nbsp; &nbsp; &nbsp; str = str.Substring(lpos + 1, rpos - lpos - 1);&nbsp; &nbsp; &nbsp; NameValueCollection msg = ParseJson(str);&nbsp; &nbsp; &nbsp; if (!string.IsNullOrEmpty(msg["error"]))&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; ShowError(msg["error"], msg["error_description"]);&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; NameValueCollection token = ParseUrlParameters(str);&nbsp; &nbsp; Session["QC_AccessToken"] = token["access_token"]; //access_token 放入Session&nbsp; &nbsp; return token["access_token"];&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// 使用Access Token来获取用户的OpenID&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;param name="accessToken"&gt;&lt;/param&gt;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;&nbsp; public string GetOpenID()&nbsp; {&nbsp; &nbsp; string parms = "?access_token=" + Session["QC_AccessToken"];&nbsp; &nbsp; string url = GET_OPENID_URL + parms;&nbsp; &nbsp; string str = GetRequest(url);&nbsp; &nbsp; if (str.IndexOf("callback") != -1)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; int lpos = str.IndexOf("(");&nbsp; &nbsp; &nbsp; int rpos = str.IndexOf(")");&nbsp; &nbsp; &nbsp; str = str.Substring(lpos + 1, rpos - lpos - 1);&nbsp; &nbsp; }&nbsp; &nbsp; NameValueCollection user = ParseJson(str);&nbsp; &nbsp; if (!string.IsNullOrEmpty(user["error"]))&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; ShowError(user["error"], user["error_description"]);&nbsp; &nbsp; }&nbsp; &nbsp; Session["QC_OpenId"] = user["openid"]; //openid 放入Session&nbsp; &nbsp; return user["openid"];&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// 显示错误信息&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;param name="code"&gt;错误编号&lt;/param&gt;&nbsp; /// &lt;param name="description"&gt;错误描述&lt;/param&gt;&nbsp; private void ShowError(string code, string description = null)&nbsp; {&nbsp; &nbsp; if (description == null)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; switch (code)&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; case "20001":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description = "&lt;h2&gt;配置文件损坏或无法读取,请检查web.config&lt;/h2&gt;";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; case "30001":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description = "&lt;h2&gt;The state does not match. You may be a victim of CSRF.&lt;/h2&gt;";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; case "50001":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description = "&lt;h2&gt;可能是服务器无法请求https协议&lt;/h2&gt;可能未开启curl支持,请尝试开启curl支持,重启web服务器,如果问题仍未解决,请联系我们";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; default:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description = "&lt;h2&gt;系统未知错误,请联系我们&lt;/h2&gt;";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; Response.Write(description);&nbsp; &nbsp; &nbsp; Response.End();&nbsp; &nbsp; }&nbsp; &nbsp; else&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; Response.Write("&lt;h3&gt;error:&lt;h3&gt;" + code + "&lt;h3&gt;msg:&lt;h3&gt;" + description);&nbsp; &nbsp; &nbsp; Response.End();&nbsp; &nbsp; }&nbsp; }}3.新浪微博的OAuth类public class SinaOAuth : BaseOAuth{&nbsp; public string AppKey = ConfigurationManager.AppSettings["OAuth_Sina_AppKey"];&nbsp; public string AppSecret = ConfigurationManager.AppSettings["OAuth_Sina_AppSecret"];&nbsp; public string RedirectUrl = ConfigurationManager.AppSettings["OAuth_Sina_RedirectUrl"];&nbsp; public const string GET_AUTH_CODE_URL = "https:///oauth2/authorize";&nbsp; public const string GET_ACCESS_TOKEN_URL = "https:///oauth2/access_token";&nbsp; public const string GET_UID_URL = "https:///2/account/get_uid.json";&nbsp; /// &lt;summary&gt;&nbsp; /// 新浪微博登录,跳转到登录页面&nbsp; /// &lt;/summary&gt;&nbsp; public override void Login()&nbsp; {&nbsp; &nbsp; //-------生成唯一随机串防CSRF攻击&nbsp; &nbsp; string state = GetStateCode();&nbsp; &nbsp; Session["Sina_State"] = state; //state 放入Session&nbsp; &nbsp; string parms = "?client_id=" + AppKey + "&amp;redirect_uri=" + Uri.EscapeDataString(RedirectUrl)&nbsp; &nbsp; &nbsp; + "&amp;state=" + state;&nbsp; &nbsp; string url = GET_AUTH_CODE_URL + parms;&nbsp; &nbsp; Response.Redirect(url); //跳转到登录页面&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// 新浪微博回调函数&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;&nbsp; public override string Callback()&nbsp; {&nbsp; &nbsp; string code = Request.QueryString["code"];&nbsp; &nbsp; string state = Request.QueryString["state"];&nbsp; &nbsp; //--------验证state防止CSRF攻击&nbsp; &nbsp; if (state != (string)Session["Sina_State"])&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; ShowError("The state does not match. You may be a victim of CSRF.");&nbsp; &nbsp; }&nbsp; &nbsp; string parms = "client_id=" + AppKey + "&amp;client_secret=" + AppSecret &nbsp; &nbsp; &nbsp; + "&amp;grant_type=authorization_code&amp;code=" + code + "&amp;redirect_uri=" + Uri.EscapeDataString(RedirectUrl);&nbsp; &nbsp; string str = PostRequest(GET_ACCESS_TOKEN_URL, parms);&nbsp; &nbsp; NameValueCollection user = ParseJson(str);&nbsp; &nbsp; Session["Sina_AccessToken"] = user["access_token"]; //access_token 放入Session&nbsp; &nbsp; Session["Sina_UId"] = user["uid"]; //uid 放入Session&nbsp; &nbsp; return user["access_token"];&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// 显示错误信息&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;param name="description"&gt;错误描述&lt;/param&gt;&nbsp; private void ShowError(string description = null)&nbsp; {&nbsp; &nbsp; Response.Write("&lt;h2&gt;" + description + "&lt;/h2&gt;");&nbsp; &nbsp; Response.End();&nbsp; }}4.微信的OAuth类public class WeixinOAuth : BaseOAuth{&nbsp; public string AppId = ConfigurationManager.AppSettings["OAuth_Weixin_AppId"];&nbsp; public string AppSecret = ConfigurationManager.AppSettings["OAuth_Weixin_AppSecret"];&nbsp; public string RedirectUrl = ConfigurationManager.AppSettings["OAuth_Weixin_RedirectUrl"];&nbsp; public const string GET_AUTH_CODE_URL = "https:///connect/qrconnect";&nbsp; public const string GET_ACCESS_TOKEN_URL = "https:///sns/oauth2/access_token";&nbsp; public const string GET_USERINFO_URL = "https:///sns/userinfo";&nbsp; /// &lt;summary&gt;&nbsp; /// 微信登录,跳转到登录页面&nbsp; /// &lt;/summary&gt;&nbsp; public override void Login()&nbsp; {&nbsp; &nbsp; //-------生成唯一随机串防CSRF攻击&nbsp; &nbsp; string state = GetStateCode();&nbsp; &nbsp; Session["Weixin_State"] = state; //state 放入Session&nbsp; &nbsp; string parms = "?appid=" + AppId&nbsp; &nbsp; &nbsp; + "&amp;redirect_uri=" + Uri.EscapeDataString(RedirectUrl) + "&amp;response_type=code&amp;scope=snsapi_login"&nbsp; &nbsp; &nbsp; + "&amp;state=" + state + "#wechat_redirect";&nbsp; &nbsp; string url = GET_AUTH_CODE_URL + parms;&nbsp; &nbsp; Response.Redirect(url); //跳转到登录页面&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// 微信回调函数&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;param name="code"&gt;&lt;/param&gt;&nbsp; /// &lt;param name="state"&gt;&lt;/param&gt;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;&nbsp; public override string Callback()&nbsp; {&nbsp; &nbsp; string code = Request.QueryString["code"];&nbsp; &nbsp; string state = Request.QueryString["state"];&nbsp; &nbsp; //--------验证state防止CSRF攻击&nbsp; &nbsp; if (state != (string)Session["Weixin_State"])&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; ShowError("30001");&nbsp; &nbsp; }&nbsp; &nbsp; string parms = "?appid=" + AppId + "&amp;secret=" + AppSecret&nbsp; &nbsp; &nbsp; + "&amp;code=" + code + "&amp;grant_type=authorization_code";&nbsp; &nbsp; string url = GET_ACCESS_TOKEN_URL + parms;&nbsp; &nbsp; string str = GetRequest(url);&nbsp; &nbsp; NameValueCollection msg = ParseJson(str);&nbsp; &nbsp; if (!string.IsNullOrEmpty(msg["errcode"]))&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; ShowError(msg["errcode"], msg["errmsg"]);&nbsp; &nbsp; }&nbsp; &nbsp; Session["Weixin_AccessToken"] = msg["access_token"]; //access_token 放入Session&nbsp; &nbsp; Session["Weixin_OpenId"] = msg["openid"]; //access_token 放入Session &nbsp; &nbsp; return msg["access_token"];&nbsp; }&nbsp; /// &lt;summary&gt;&nbsp; /// 显示错误信息&nbsp; /// &lt;/summary&gt;&nbsp; /// &lt;param name="code"&gt;错误编号&lt;/param&gt;&nbsp; /// &lt;param name="description"&gt;错误描述&lt;/param&gt;&nbsp; private void ShowError(string code, string description = null)&nbsp; {&nbsp; &nbsp; if (description == null)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; switch (code)&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; case "20001":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description = "&lt;h2&gt;配置文件损坏或无法读取,请检查web.config&lt;/h2&gt;";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; case "30001":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description = "&lt;h2&gt;The state does not match. You may be a victim of CSRF.&lt;/h2&gt;";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; case "50001":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description = "&lt;h2&gt;接口未授权&lt;/h2&gt;";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; default:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description = "&lt;h2&gt;系统未知错误,请联系我们&lt;/h2&gt;";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; Response.Write(description);&nbsp; &nbsp; &nbsp; Response.End();&nbsp; &nbsp; }&nbsp; &nbsp; else&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; Response.Write("&lt;h3&gt;error:&lt;h3&gt;" + code + "&lt;h3&gt;msg:&lt;h3&gt;" + description);&nbsp; &nbsp; &nbsp; Response.End();&nbsp; &nbsp; }&nbsp; }}5.web.config配置信息&lt;appSettings&gt;&nbsp; &nbsp; &lt;!--QQ登录相关配置--&gt;&nbsp; &nbsp; &lt;add key="OAuth_QQ_AppId" value="123456789" /&gt;&nbsp; &nbsp; &lt;add key="OAuth_QQ_AppKey" value="25f9e794323b453885f5181f1b624d0b" /&gt;&nbsp; &nbsp; &lt;add key="OAuth_QQ_RedirectUrl" value="/oauth20/qqcallback.aspx" /&gt;&nbsp; &nbsp; &lt;!--新浪微博登录相关配置--&gt;&nbsp; &nbsp; &lt;add key="OAuth_Sina_AppKey" value="123456789" /&gt;&nbsp; &nbsp; &lt;add key="OAuth_Sina_AppSecret" value="25f9e794323b453885f5181f1b624d0b" /&gt;&nbsp; &nbsp; &lt;add key="OAuth_Sina_RedirectUrl" value="/oauth20/sinacallback.aspx" /&gt;&nbsp; &nbsp; &lt;!--微信登录相关配置--&gt;&nbsp; &nbsp; &lt;add key="OAuth_Weixin_AppId" value="wx123456789123" /&gt;&nbsp; &nbsp; &lt;add key="OAuth_Weixin_AppSecret" value="25f9e794323b453885f5181f1b624d0b" /&gt;&nbsp; &nbsp; &lt;add key="OAuth_Weixin_RedirectUrl" value="/oauth20/weixincallback.aspx" /&gt;&lt;/appSettings&gt;。

新浪微博android客户端

新浪微博android客户端

新浪微博android客户端概述微博Android平台SDK为第三方微博应用提供了文档易用的微博API调用服务,使第三方客户端无需了解复杂的验证,API调用过程。

并可以实现分享到微博的功能,可以分享文字,或者多媒体信息到内置的分享页面,并发送到微博。

此SDK封装了 HTTP请求以及Json信息的解析,我们只要实现页面相关功能的开发就行了,这样对于我们Android开发人员来说,减轻了不少压力呀!名词解释Consumer_key 分配给每个第三方应用的app key。

用于鉴权身份,显示来源等功能。

Consumer_secret 生成请求request Token的secret,与consumer key一起分配。

Oauth_token 服务器根据app key和时间,callback_url等哈希出的token值,用于获取oauth verifier。

Oauth_token_secret 与oauth token一起使用,用于获取oauth verifier。

Oauth_verifier 通过oauth页面返回的verifier,用于最终获取access token。

Access_token 表示用户身份的token,用于微博API的调用。

整体架构及分层∙UI层∙微博中的各个窗体∙logic层∙程序的核心控制调度模块,获取UI传递的数据、要执行的任务,调用微博接口,获得网络数据,返回消息,刷新(切换)UI ∙微博接口层(新浪API已封装)∙网络访问层(新浪API已封装)1.OAuth(1)和初始页面介绍1.首先说明一下新浪微博提供了OAuth和Base OAuth两种认证方式(如果不知道什么是OAuth和BaseOAuth请自己google一下恶补),本项目是采用OAuth认证方式,采用这种方式就需要有用户的新浪UserID、Access Token、AccessSecret这3样东西才能自由便利的调用新浪的开放接口,本项目是这样做的当用户第一次使用软件时进行授权认证获取这3样东西的时候存储到SharedPreferences中以便用户下次使用时不需要重新进行繁琐的授权认证操作直接从SharedPreferences中读取出来即可,由于这样的需求载入页面的功能设定是这样:当用户打开软件显示载入页面时开始检查SharedPreferences中是否已经保存有用户的新浪微博的UserID号、Access Token、AccessSecret的记录,如果一条记录都没有那就说明用户是第一次使用本软件那么跳到认证授权页面进行授权认证操作(认证授权功能在接下来的两篇中进行实现讲解)获取这3个值保存到SharedPreferences中,如果已经包括了记录,那么读取这些记录的UserID号、Access Token、AccessSecret值然后根据这3个值调用新浪的api接口获取这些记录对应的用户昵称信息等!下图是OAuth认证的原理图1.开场动画及登陆好了既然了解的认证机制,那么我们就来实现这个功能,首先我们先为我们的项目设计开场动画,然后跳转转到登陆页面!(由于我没时间去做那么多精美的图片,所以教程中的图片大部分还是来自于原版的新浪微博,有兴趣的同学可以自己设计一些自己比较喜欢的图片,所以这里图片的资源引用我就不做详细的介绍了!)在UI层创建Logo.java 和Login.javalogo Activity的介绍Logo的布局文件就是两个ImageView,并对这两个ImageView设置动画效果上面的是一个帧动画,下面是一个渐变Alpha动画并对这个动画进行监听,当动画结束的时候我们启动Login Activity最后记得在mainfest中注册声明Login activity当做完这些,我们的基本页面就算完成了!2.了解程序的运行流程上图说明了程序的整体运行框架,接着我们来详细看一下Logic层的一些核心类的介绍,为我们的登录验证做好前置工作2.Logic核心层的的介绍:1. IWeiboActivity接口的介绍∙IWeiboActivity接口∙所有窗口实现∙init()方法∙完成初始化∙refresh(Objet ...args)方法∙完成窗体刷新∙3.Task类的介绍定义程序中的任务如:登录,发表新微博,获取用户微博,获取用户详细信息等各种任务int taskId//当前任务的IDMap params //当前任务的参数4.MainService的介绍(核心控制类)1. 首先说一下MainService的主要功能完成程序调度接收UI层数据(任务),完成业务逻辑,返回信息,更新UI在后台运行(继承自Service类)线程(实现Runnable接口)不断侦听UI传过来任务消息2. MainService流程图预览3. MainService的核心方法个变量List<Activity> allActivity保存当前所有Activity,方便切换List<Task> allTask把当前任务加到集合中然后开启线程在Task中遍历任务去执行任务public void run() {while (isrun) {Task lastTask = null;synchronized (allTask) {//这里有可能同时有多个任务并发所以要加锁同步if (allTask.size() > 0) {lastTask = allTask.get(0);Log.i("yanzheng", "任务ID" + lastTask.getTaskID());doTask(lastTask);}}// 每隔一秒钟检查是否有任务try {Thread.sleep(1000);} catch (Exception e) {}}当接线程发现任务会调用doTask(Task task)方法去执行任务Message mess = hand.obtainMessage();mess.what = task.getTaskID();//将当前任务的ID 放到Message中mess.obj = Object object;//讲当前任务执行的结果放到message中hand.sendMessage(mess);//发送当前消息allTask.remove(task);//当前任务执行完毕把任务从任务集合中removepublic void handleMessage(Message msg) 可以接收一个Message对象(也就是我们doTask中传递的Message)switch (msg.what) {case Task.TASK_GET_USER_HOMETIMEINLINE://任务ID//因为当前HomeActivity实现了IWeiboActivity这个接口,我们得到当前activity的实例,并调用它实现的刷新方法,同时讲参数传递过去,这里就实现了Service中刷新数据的方法了!IWeiboActivity ia = (IWeiboActivity) MainService.getActivityByName("HomeActivity");ia.refresh(HomeActivity.REFRESH_WEIBO, msg.obj);break;说到这里相信大家对MainService有了一个整体的了解,接下来我们通过登陆来验证我们Service’的功能!4. OAuth(2)登陆请求认证篇1.调用web进行登录验证上次我们的UI篇说到了登陆页面,接下来我们要做的就是实现登陆功能首先当我们进入Login activity时我们没有进行授权,就要给用户提示一个信息,让用户进入到授权页面!那么我们首先来做这个提示功能,并实现点击确定按钮,跳转到认证页面!首先我们来了解一下OAuthActivity 这个Activity我们需要特殊处理首先介绍一下他的注册当我们点击Dialog中的确定按钮先打开那个callbackurl 那个URL回调的页面就是我们的OAuthActivity .我们在这个页面就可以处理我们返回的数据,Uriuri=this.getIntent().getData();得到AccessToken的key和Secret,可以使用这两个参数进行授权登录了!这里我们需要保存我们的登陆信息以及AccessToken的key和Secret,下次在进入页面我们就不需要,从新授权,直接拿这个信息就可以进行登陆认证!那么OK 我们在这个页面进行保存信息!首先我们需要写一个方法来保存首选项SharedPreferences,将用户信息保存起来!那么接下来我们在Util下写这个方法!2.保存授权信息一个是保存当前用户信息,一个是读取用户保存的信息!在OAuthActivity中当我们点击登陆按钮,需要执行认证请求,然后将返回的数据保存在首选项中,在跳转到登陆页面! 此时我们的登陆页面依然有那个提示框,所以我们要判断当前首选项中是否有保存的用户信息,如果没有则提示那个登陆框,如果有得话,就把用户的昵称显示在EdieText中! 所以我们需要在初始化的时候判断当前的首选项是否保存了用户的信息如果提示认证的Dialog没有显示我们则可以点击登陆按钮在Service进行登陆请求此时我们需要做的就是当点击登陆按钮向Service发送一个任务,此时记住我们要在Manifest中注册MainService和在Login Activity启动MainService3.MainService任务执行流程前面我们说了MainService的工作原理,接下来我们来详细说下,当任务发送到Service接到任务会怎么处理!下图是我画的一个启动任务到完成任务的流程图通过上面的大致流程,相信大家!对Service的工作流程有了一个更深刻的认识接下来我们来讲解一下认证登陆的原理!用户安装完应用程序,第一次登录,会提示用户认证,用户认证调取的是新浪的页面,调用此页面需要第三方应用的appkey和用户在认证页面输入自己的账号密码提交到新浪,新浪会返回给第三方应用一个加密的密匙,第三方应用通过这个密匙(也就是用户的凭据),去向新浪服务器端请求用户的信息,完成登录!具体参考下图:5.主页面的实现当我们完成登录的验证,就会自动跳转的主页面,在实现主页面功能的开始我们先看一下程序完成后的效果图,下图就是我们完成后的新浪微博客户端的主页面!怎么样?看着心动吧!那么下面我们就来动手实现这样一个漂亮的页面首先我们来说明下,整个页面的组成部分!首先是外框架采用TabActivity,下面五个按钮是TabActivity布局文件的一组RadioGroup当我们点击任何一个页面的时候就会将该一个与之对应的Activity在当前页显示!1.TabActibity的实现首先我们要实现的就是布局文件,我们来创建一个maintabs.xml文件,里面是父容器是</TabHost>,在Tab Host中我们必须要写它的TabWidget属性,这里我们设置它不可见!下面就是我们的要实现的按钮组RadioGroup!如下图所示的效果!要实现下图效果我们就要需创建我们用来切换的5个ActivityHomeActivity//主页MSGActivity//信息UserInfoActivity//用户信息SearchUser//收索MoreSetting//更多这里我们的按钮都是使用的是同一个style效果,具体的参数属性设置参考style文件完成布局文件,接下来我们来实现TabActivity内代码的编写,来实现我们的需求!首先我们的activity需要继承自TabActivitytab1=this.getTabHost();//获取TabHostTabSpec ts1=tab1//tab子标签跳转到HomeActivity.newTabSpec(TAB_HOME)//设定标签.setIndicator(TAB_HOME);//指定一个标签作为选项卡指示符//指定一个加载activity的Intent对象作为选项卡内容ts1.setContent(new Intent(MainActivity.this, HomeActivity.class));tab1.addTab(ts1);//添加第一个子页TabSpec ts2=tab1.newTabSpec(TAB_MSG).setIndicator(TAB_MSG);//tab子标签跳转到MsgActivityts2.setContent(new Intent(MainActivity.this, MSGActivity.class));tab1.addTab(ts2);//添加第二个子页…….剩下的依次添加就行了下面的就是我们的点击切换页面功能的实现做完上面这一步,我们来先一下效果图!这样我们的主页面就搭建完成了!接下来我们就进入了微博的核心代码编写!2 .HomeActivity的实现1.主页面的基本内容展示.首先我们来简单的实现一下主页面的信息,简单的效果如下图所示那么我们现在首先要实现的就是布局文件,home.xml布局文件分为3个部分,标题头和进度条,以及ListView,前面我我们讲述了Service的工作原理,这里我们的HomeActivity只要实现IWeiboActivity这个接口.然后在in it()方法中去实例化任务,并把任务添加到MainService中,MainService的线程会去调用doTask()方法在dotask时候调用WeiBo这个类// 获取当前登录用户及其所关注用户的最新20条微博消息List<Status> allweibo = weibo.getFriendsTimeline();mess.obj=allweibo; //将获取信息放入到Message中发送然后在handmessage中将message传来的数据放入refresh(Object... param)方法中这里由于我们已经获取当前Activity的上下文,所以可以通过handle来更新当前Activity的页面信息,这里的param参数里就是我们放入的List<Status>allweibo,这里我们把它强制转换成List<Status> 传入adapter中! 讲LlistView setadapter 我们的主页面信息也就完成了!我这里解释一下 Status这个对象就是微博内容.里面封装了微博的各种信息这里我们可以根据传递的List<Status> 中微博内容的各种信息显示到ListView中!这里我们来实现另外一个功能就是我们现在主页面一次只加载5条微博信息,当我们的ListView 拖动到底部的时候会显示一项更多选项,当我们点击更多的时候,会去在向服务器请求,在加载5条微博显示!现在我们要做的就是写用来显示微博信息的Listview中的item布局,具体的实现代码参考item.xml;这里我就不在解释item.xml中的布局是如何实现的,首先我们来看一下当我们点击更多选项时,程序大致的运行流程现在我们就要了解另外一个概念分页,其实在SDK已经有一个方法就是专门为我们请求微博信息做分页的方法Paging(int page, int count) ,这里我们只要传递,当前的请求的页说和每页的条数!系统就会返回我们需要的微博条目!这里我们需要从新写上面init()方法中的任务参数!同时在Service请求微博的时候我们可以吧paging这个参数传递进去接下来我们来详细说一下我们的weiboAdapter这里我就主要解释一下 addmore()和getView 方法//请求更多的数据public void addmoreDate(List<Status> addmore){this.status.addAll(addmore);//吧新传得数据加到现在的list中this.notifyDataSetChanged();}上面的方法主要功能就是给当前的adapter添加新的数据,然后提醒当前的适配器数据发生改变了,此处使用this.notifyDataSetChanged();就是吧当前添加的新数据,追加显示到ListView中! 下面我们来说一下@Overridepublic View getView(int position, View conterView, ViewGroup parent) { ViewHolder vHolder;if (conterView==null) {//加载一个新的View当 Root为null时可以拿到所有XML的资源文件conterView=LayoutInflater.from(mContext).inflate(yout.itemview, null);vHolder=new ViewHolder();itemName=(TextView)conterView.findViewById(ItemName);…conterView.setTag(vHolder);}else {//如果缓存中没有就重新创建vHolder=(ViewHolder) conterView.getTag();}上面就是一个很普通的复用conterView,如果这一块看不懂得话还是好好看看Listview吧下面来看一下我们完成后的效果图实现完上面的效果!我们会发现尽管我们在Service中去下载微博信息来更新UI 界面显示,但是主页面依然会很卡.而且现实的时间要很久,因为每调用一次getView()就去下载那些微博内容图片,下载是一个耗时的操作,所以这里我们就需要做异步加载图片!至于关于什么是异步我相信大家都能理解,因为我们前面的项目中已经学习了异步加载,这里我就直接上代码,不做过多的解释,如果还有看不懂或者弄不明白的可以在来单独给我说!做到这里,细心的同学可能会发现一个BUG,就是我们如果按标准的convertview复用,就会出现一个问题,就是当我们采用上面那种标准的复用写法,加载的微博信息会出现错位,也就是说当我们的item不一样高度,页面显示的item数量不统一时,LlistView就会出现错位!当我们异步加载的时候不管怎么打标签就会发现图片依然会错位!这里我们需要另外一种写法,虽然效率上可能没用convertview复用高!但是它不会出现错位的现场!View statusView=null;if ((conterView!=null)&&(conterView.findViewById(R.id.contentPic)!=null)) { statusView=conterView;}else {//如果缓存中没有就重新创建//加载一个新的View当 Root为null时可以拿到所有XML的资源文件statusView=LayoutInflater.from(mContext).inflate(yout.itemview, null);}ViewHolder vHolder=null;vHolder=new ViewHolder();Content=(TextView)statusView.findViewById(ItemContent);vHolder.ivitemPorprait=(ImageView)statusView.findViewById(R.id.ivItemPortrait);………..vHolder.contentPic=(ImageView)statusView.findViewById(R.id.contentPic);通过这种方式去实例化我们item中的每一个子控件!至于每个item要显示什么数据,就是根据 Status mstatus=status.get(position);来判断,这里我们通过if (mstatus.getRetweeted_status()!=null) {….}判断当前微博是否是又转发!其中, mstatus.getRetweeted_status()获得的同样是status对象,我们同样可以判断是否有内容图片之类的,具体的判断参考WeiboAdapter其中需要我们注意的是我们的Item 中的布局可以简单的看成3不封,左边是头像,右边是上下两部分,上面是微博内容,下面是又转发内容,如果没有使用又转发,我们可以显示所有微博内容,包括内容图片,还有就是我们的新浪V认证,是系统认真的用户我们就给一个V字标示!到这里我们的主页面就算基本完成接下来我们来实现基本菜单的功能2.菜单功能的实现实现效果如下图所示:具体怎么实现 ,这里我就不说了很简单,不明白得可以参考代码这里菜单功能的实现,由于时间的原因,我们就只只实现退出功能,其余的我们可以根据API进行扩展实现,这个退出功能的代码我们只在Service中实现,下面我们来写这个代码public static void exitAPP(Context context) {Intent it = new Intent("weibo4android.logic.util.MainService");context.stopService(it);//停止服务//杀死进程我感觉这种方式最直接了当android.os.Process.killProcess(android.os.Process.myPid());for (Activity activity : allActivity) {//遍历所有activity 一个一个删除activity.finish();}}接下来我们来实现一个小功能就是当我们点击back键的时候,程序就退出去了,这样给用户的体验很不好,这里我们就需要拦截Back键执行的动作,去弹出一个确认退出提示框,当用户点击确认的时候,才会退出应用程序!这里我们需要重写父类的onKeyDown(int keyCode, KeyEvent event){….}方法这里if (keyCode == KeyEvent.KEYCODE_BACK) {btexit();//当我们按下返回键的时候要执行的方法return true;}这样我们就完成了Back键的拦截在btexit()方法中我们弹出一个dialog 让用户选择是否退出!实现玩这个功能,我们就来实现标题头按键及功能的实现!3.实现布局标题头我们要实现的效果如下图所示,当我们点击写微博按钮和刷新按钮执行相应的功能因为我们这个标题都可能多出会用到所以,这里我们两边的ImageView默认是没有内容的当我们需要在一个Activity显示什么按钮是可以找到那个imageview的ID,我们这当前的Aictiity去给那个imageview指定按钮图片!接下来我们从Service取得当前用户,并将它的用户名称名显示在title中间那么我们现在来实现标题头的两个按按钮的功能,首先我们说一下刷新主页面微博信息的功能如何实现当我们点击刷新按钮时,头部的进度条会显示,,同时刷新按钮不会显示!刷新的功能是就是从新请求第一页的信息来显示,从新加载listView(这里可能需要优化)写完点击事件,我们接下来要写的就是发表微博,这里我们首先要创建一个新的activity3.发表一条新微博当我们在HomeActivity点击写微博按钮,就会跳转到发送微博的Activity,这里我们新建一个WriteWeibo,写微博页面的布局很简单,现在我们先看一下布局的实现这个布局的底部功能,没有实现,大家有兴趣的尅自己实现,这里我们就只实现一个主要功能,就是当我们点击发送按钮,发送当前文本框中内容!在WriteWeibo,里有一个方法,这里我们来解释一下这里我们只是简答的只能发布文字微博,如果我们发布成功,就结束当前页面微博类有发送带图片和当前位置的方法,有兴趣的同学也可以自己看一下6.微博信息页面1.显示当前点击的微博信息当我们点击主页面的微博信息时,可以跳转到微博信息页面,这里我们新建一个叫WeiboInfo得Activity!当我们在主页面点击某一个Item的时候就会跳转到这个页面,那么我们来看一下,点击那一快代码当我们到另外一个线程的时候,新启动一个线程,来接收这些数据,并用handle来更新这些数据到页面显示!这里先贴出显示效果给大家看一下页面布局没什么特别的,就是底部是通过一个线性布局,加5个TextView来实现的,别的基本上没什么技术含量!它也可以设置自己的点击事件,这里我们实现了评论转发收藏这三个功能!别的就没什么难度了,大家可根据自己的需要来实现!这里我们来介绍另外一个工具类WeiboUtil,这个类里面写的是一些我们对微博操作的方法,比发表,转发,评论微博…至于如何实现这些方法,我是通过官方SDKWeiBo类里的实现方法,直接调用的,如果哪位同学先练习http请求那一块可以自己写方法来实现,很简单只要把官方要的参数传递过去就行请求URL https:///2/statuses/repost.json返回的是Gson数据,解析就行了至于WeiboUtil里面的方法,我相信大家一看都明白了2.评论页面当我们点击微博新页面的评论按钮,就到了评论页面!页面布局很简单,这里给大家看一下效果图页面布局没什么好说的这里我们就说一下代码部分!在创建的时候获取上一个页面传递的微博的ID,在我们点击提交评论的时候将文本框中的评论内容提交!并判断是否讲内容发布成微博下面的按钮功能由于时间的原因我一直没弄,如果按照官方的做法,我现在还实现不了大家如果有能力的话可以自己实现,其中@ 和话题很简单就是在当前文本框中插入一个“@”符号和# 内容 #符号至于表情实现是能实现但是优化的有问题大家可以从官方去下载那些表情用网格视图来显示那些表情坐标就是插入你当前的位置,这里要调用GPS 我还没研究3.转发页面首先看一下效果图吧,拿图说话这个布局我就不用解释了 ,底部的那个是单独的一个布局,这里用include吧那个布局包含到我们需要的页面下面就是一个线性布局,包含5个ImageButton转发页面其实很简单,我们在weiboInfo那个activity点击转发将我们需要的信息传递到转发页面只要我们点击发送就实现了转发功能,具体实现参考代码7. UserInfoActivity页面1.页面布局主页面的布局实现稍微有点复杂 ,也有可能是我实现的方法不合理,但是效果达到了!此布局主要分为五大块第一 <!-- 头布局 --> 显示标题头信息第二 <!-- 用户头像及用户名布局 --> 显示用户头像那一块第三 <!-- 用户地址和登录布局 --> 此处采用了 2个层叠和2个相对布局完成第四 <!--微博话题粉丝条数布局 --> 此处采用了大的线性和相对层叠布局嵌套完成第五 <!--底部收藏和黑名单 --> 此处布局与第三布局向类似整体部分采用一个大的ScrollView 这样方便我们浏览更多的东西具体的可以参考代码布局userinfo.xml下面我们来看一下代码实现的效果图2.代码实现代码部分就相对简单一点,还记得我们在登录认证的时候,获取当前的User对象,也就是我们自己,在Service中我们设置当前user为当前登录的User对象这里我们可以直接取哪里的数据将当前User的各种需要显示的属性显示到这个页面具体的代码参考UserInfoActivity这里我们可以点击关注,微博,粉丝,话题,按钮来到想对应的Activity这里由于时间原因,实现的过程先放到后面,到时候我会把我以前写的代码贴出来供大家参考,其实自己实现的话也很简单 ,大家没事可以多看看WeiBo这个类好多我们需要的功能人家都给封装了这里我们只要会调用就OK了这里我们来实现更多项的布局8.MoreSetting页面的实现这个页面除了布局基本上没什么好说的这里我们就先上布局效果给大家看看这是在xml中实现的布局效果,这个布局跟新浪的菜单项布局不一样,我感觉那个看着不舒服所以就做了一个这样的!里面大部分内容采用表格布局,没有使用什么自定义控件,所以大家看起了没什么困难就是实现嵌套的比较繁琐,如果前面几个加这个UI都能OK的话,我相信android这一块你的布局就没什么大的问题了呵呵通过OutLine我们可以很清晰的看出此页面的流程结构对于各种布局的嵌套使用,掌握好规律实现起来还是挺简单的至于菜单项的功能,我们这里先不做过多具体的实现,这里我先将,实现的框架搭建好,方便大家以后自己实现好了更多菜单项页面我们已经基本完成下面我们来看一下收索页面的实现9. SearchUser页面的实现还是老规矩,直接上效果图,然后我们在来看实现过程那么首先我们来看一下这个页面的布局,分为三个部分,头部是一块收索那是一块,下面那一大块是一个Listview!稍微有点难度的是中间那一块那么我们就首先来讲解中间那一快得问题,上面是一个相对布局,里面一个AutoCompleteTextView,这个AutoCompleteTextView采用了一个自定义的背景布局,还有一个button就是那个收索按钮底部是一组RadioGroup,里面是两个RadioButton,采用了自定义的style<style name="search_radiobutton_user"><item name="android:textColor">#ff7f7f7f</item><item name="android:ellipsize">marquee</item><item name="android:background">@drawable/search_radio_user</item><item name="android:paddingLeft">55.0dip </item><item name="android:layout_width">fill_parent</item><item name="android:layout_height">fill_parent</item><item name="android:button">@null</item><item name="android:singleLine">true</item><item name="android:drawablePadding">6.0dip</item><item name="android:layout_weight">1.0</item></style这样我们就完成了收索页面的布局实现,接着我们来做一下代码功能的实现当我们在搜索框输入搜索字段点击收索会调用下面的方法给Service发一个任务在Service中接收到任务会根据我们传入的搜索字段去搜索相应的微博,根据我们的分页显示来返回数据,实现原理跟HomeActivty一样,这里我就不在详细接收,他也有点击事件,当我们点击某一条搜索的微博信息,也会跳转到We iboInfo这个页面来显示某一条微博详细信息收索微博的方法一样我写在了WeiboUtil类里面,这里我解释一下doweisetTok(context, weibo);这个方法,这里因为有些操作需要登陆验证,这里我们需要从新setToken,所以我就把这个方法写到这个工具类里面了!后记:这里我在扩展两个功能就是检查网络和自动选择自动登录自动登录就是吧checkbox的选择结果存到首选项,在根据这个值来判断,是否选择了自动登录功能!网络检查就是WeiboUtil中的一个检查当前网络连接是否正常的方法!10.项目总结与扩展转眼我们这个项目的基本介绍已经接近尾声了,现在我们来总结一下整个项目的核心内容整个项目的框架结构,本项目采用了一种很优秀的设计实现,就是通过Service加载数据在前台更新页面的设计模式,通过Task任务类来区分各种任务,及任务传递的参数信息,我们可以在Service中去做一些耗时的操作,讲获得的数据message发送到handle中,在doTask方法我中我们可以将message 中消息的信息通过refresh(Object... param)方法将参数在当前页面加载,由于此方法是在Service中加载所以不会照成UI阻塞.我们应该让我们的Acitivity尽可能的简洁,最好只负责数据信息的现实,至于逻辑和加载内容,我们最好放在后台或者线程中去处理!下面我们来说一下这个项目的扩展实现,其实比起官方的客户端应用我们做的还是相当的简陋,这里我说一下我们有能力可以实现的一些功能(1):菜单功能的完善(2):主页面上下文菜单的实现(3):私信接口的调用与数据的获取显示(4):搜索页面的标签选项(5):数据库的创建,保存当前用户的信息,方便切换账号使用(6):更多页面的部分功能(7):@人名与话题文本高亮显示(8):表情的解析与显示还有一些细节性的功能我们可以根据自己的需求进行实现,我相信如果大家把文档的内容实现,在把这些扩展的功能实现一部分!找份合适的android开发工作还是不是问题的!呵呵….。

新浪微博的API

新浪微博的API

1,开发流程技术规范与指南目录隐藏∙ 1 概述∙ 2 开发流程o 2.1 申请APPKEYo 2.2 应用创建及发布流程∙ 3 开发指南o 3.1 SDK简介及作用o 3.2 如何通过授权访问数据3.2.1 OAUTH认证o 3.3 如何访问匿名接口o 3.4 接口数据如何适当的缓存o 3.5 如何避免rate limito 3.6 技术咨询和建议通过何种途径询问概述API平台应用日益丰富,为了让开发者更容易了解开发流程;为了规范API的接口,需要制定开发规范;为了对开发者进行一些深层次的指导,让开发者怎样来最优的访问API接口,特此制定开发流程技术规范与指南。

开发流程申请APPKEY1. 进入2. 如果您有新浪微博账户,可以直接登录,没有则注册一个微博账户后登录3. 登录后进入我的应用,创建一个应用4. 创建完成后会生成对应的appkey,app_secret,记住:您的app_key别对外泄露。

应用创建及发布流程应用的创建及发布包括下面的流程,开发者可以根据应用当前的状态进行相应的操作开发指南SDK简介及作用SDK是特定语言实现的一个可以通用的API使用的工具,SDK实现了新浪开放平台的全部或大部分接口,以便开发者不用关心API接口细节,认证实现等,可以直接调用接口完成特定的功能。

支持新浪微博开放平台接口的SDK语言包括Adobe air,c++,c#,java,php,python,ios等,具体请参考SDK列表页面如何通过授权访问数据微博开放平台对外支持两种用户认证方式,Basic auth以及OAUTH认证微博开放平台对外支持两种用户认证方式,Basic auth以及OAUTH认证OAUTH认证OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。

关于OAUTH协议可以参考使用OAUTH认证来获取微博数据介绍详细见:OAuth如何访问匿名接口为了方便一些应用在没有用户认证情况下需要获取一些数据,微博开放平台提供了一些匿名访问接口。

错误代码分享解析

错误代码分享解析

新浪微博分享错误代码解释10001:系统错误10002:服务端资源不可用10003:远程服务出错10005:该资源需要appkey拥有更高级的授权10006:缺少 source参数(appkey)10007:不支持的 MediaType (%s)10008:错误:参数错误,请参考API文档10009:任务过多,系统繁忙10010:任务超时10011:RPC错误10012:非法请求10013:不合法的微博用户10014:第三方应用访问api接口权限受限制10016:错误:缺失必选参数:%s,请参考API文档10017:错误:参数值非法,希望得到 (%s),实际得到 (%s),请参考API文档10018:请求长度超过限制10020:接口不存在10021:请求的HTTP METHOD不支持10022:IP请求超过上限10023:用户请求超过上限10024:用户请求接口%s超过上限10025:内部接口参数错误20001:IDS参数为空20002:uid参数为空20003:用户不存在20005:不支持的图片类型,仅仅支持JPG,GIF,PNG20006:图片太大20007:请确保使用multpart上传了图片20008:内容为空20009:id列表太长了20012:输入文字太长,请确认不超过140个字符20013:输入文字太长,请确认不超过300个字符20014:传入参数有误,请再调用一次20016:发微博太多啦,休息一会儿吧20017:你刚刚已经发送过相似内容了哦,先休息一会吧20019:不要太贪心哦,发一次就够啦20023:很抱歉,此功能暂时无法使用,如需帮助请联系@微博客服或者致电客服电话400 690 000020031:需要弹出验证码20032:微博发布成功。

目前服务器数据同步可能会有延迟,请耐心等待1-2分钟。

谢谢20033:登陆状态异常20101:不存在的微博20102:不是你发布的微博20103:不能转发自己的微博20109:微博 id为空20111:不能发布相同的微博20112:由于作者隐私设置,你没有权限查看此微博20114:标签名太长20115:标签不存在20116:标签已存在20117:最多200个标签20118:最多5个标签20119:标签搜索失败20120:由于作者设置了可见性,你没有权限转发此微博20121:visible参数非法20122:应用不存在20123:最多屏蔽200个应用20124:最多屏蔽500条微博20125:没有屏蔽过此应用20126:不能屏蔽新浪应用20127:已添加了此屏蔽20128:删除屏蔽失败20129:没有屏蔽任何应用20201:不存在的微博评论20203:不是你发布的评论20204:评论ID为空20206:作者只允许关注用户评论20207:作者只允许可信用户评论20401:域名不存在20402:verifier错误20403:屏蔽用户列表中存在此uid20404:屏蔽用户列表中不存在此uid20405:uid对应用户不是登录用户的好友20406:屏蔽用户个数超出上限20407:没有合适的uid20408:从feed屏蔽列表中,处理用户失败20501:错误:source_user 或者target_user用户不存在20502:必须输入目标用户id或者 screen_name 20503:关系错误,user_id必须是你关注的用户20504:你不能关注自己20505:加关注请求超过上限20506:已经关注此用户20507:需要输入验证码20508:根据对方的设置,你不能进行此操作20509:悄悄关注个数到达上限20510:不是悄悄关注人20511:已经悄悄关注此用户20512:你已经把此用户加入黑名单,加关注前请先解除20513:你的关注人数已达上限20522:还未关注此用户20523:还不是粉丝20601:列表名太长,请确保输入的文本不超过10个字符20602:列表描叙太长,请确保输入的文本不超过70个字符20603:列表不存在20604:不是对象所属者20605:列表名或描叙不合法20606:记录已存在20607:错误:数据库错误,请联系系统管理员20608:列表名冲突20610:目前不支持私有分组20611:创建list失败20612:目前只支持私有分组20613:错误:不能创建更多的列表20614:已拥有列表上下,请参考API文档20615:成员上线,请参考API文档20616:不支持的分组类型20617:最大返回300条20618:uid 不在列表中20701:不能提交相同的标签20702:最多两个标签20704:您已经收藏了此微博20705:此微博不是您的收藏20706:操作失败20801:trend_name是空值20802:trend_id是空值21001:标签参数为空21002:标签名太长,请确保每个标签名不超过14个字符21103:该用户已经绑定手机21104:verifier错误21105:你的手机号近期频繁绑定过多个帐号,如果想要继续绑定此帐号,请拨打客服电话400 690 0000申请绑定21108:原始密码错误21109:新密码错误21110:此用户暂时没有绑定手机21113:教育信息不存在21115:职业信息不存在21117:此用户没有qq信息21120:此用户没有微号信息21121:此微号已经存在21301:认证失败21302:用户名或密码不正确21303:用户名密码认证超过请求限制21304:版本号错误21305:缺少必要的参数21306:Oauth参数被拒绝21307:时间戳不正确21308:nonce参数已经被使用21309:签名算法不支持21310:签名值不合法21311:consumer_key不存在21312:consumer_key不合法21313:consumer_key缺失21314:Token已经被使用21315:Token已经过期21316:Token不合法21317:Token不合法21318:Pin码认证失败21319:授权关系已经被解除21320:不支持的协议21321:未审核的应用使用人数超过限制21322:重定向地址不匹配21323:请求不合法21324:client_id或client_secret参数无效21325:提供的Access Grant是无效的、过期的或已撤销的21326:客户端没有权限21327:token过期21328:不支持的 GrantType21329:不支持的 ResponseType21330:用户或授权服务器拒绝授予数据访问权限21331:服务暂时无法访问21332:access_token 无效21333:禁止使用此认证方式其他的错误代码:304 Not Modified: 没有数据返回.400 Bad Request: 请求数据不合法,或者超过请求频率限制. 详细的错误代码如下:o 40028:内部接口错误(如果有详细的错误信息,会给出更为详细的错误提示)o 40033:source_user或者target_user用户不存在o 40031:调用的微博不存在o 40036:调用的微博不是当前用户发布的微博o 40034:不能转发自己的微博o 40038:不合法的微博o 40037:不合法的评论o 40015:该条评论不是当前登录用户发布的评论o 40017:不能给不是你粉丝的人发私信o 40019:不合法的私信o 40021:不是属于你的私信o 40022:source参数(appkey)缺失o 40007:格式不支持,仅仅支持XML或JSON格式o 40009:图片错误,请确保使用multipart上传了图片o 40011:私信发布超过上限o 40012:内容为空o 40016:微博id为空o 40018:ids参数为空o 40020:评论ID为空o 40023:用户不存在o 40024:ids过多,请参考API文档o 40025:不能发布相同的微博o 40026:请传递正确的目标用户uid或者screen nameo 40045:不支持的图片类型,支持的图片类型有JPG,GIF,PNG o 40008:图片大小错误,上传的图片大小上限为5Mo 40001:参数错误,请参考API文档o 40002:不是对象所属者,没有操作权限o 40010:私信不存在o 40013:微博太长,请确认不超过140个字符o 40039:地理信息输入错误o 40040:IP限制,不能请求该资源o 40041:uid参数为空o 40042:token参数为空o 40043:domain参数错误o 40044:appkey参数缺失o 40029:verifier错误o 40027:标签参数为空o 40032:列表名太长,请确保输入的文本不超过10个字符o 40030:列表描述太长,请确保输入的文本不超过70个字符o 40035:列表不存在o 40053:权限不足,只有创建者有相关权限o 40054:参数错误,请参考API文档o 40059: 插入失败,记录已存在o 40060:数据库错误,请联系系统管理员o 40061:列表名冲突o 40062:id列表太长了o 40063:urls是空的o 40064:urls太多了o 40065:ip是空值o 40066:url是空值o 40067:trend_name是空值o 40068:trend_id是空值o 40069:userid是空值o 40070:第三方应用访问api接口权限受限制o 40071:关系错误,user_id必须是你关注的用户o 40072:授权关系已经被删除o 40073:目前不支持私有分组o 40074:创建list失败o 40075:需要系统管理员的权限o 40076:含有非法词o 40084:提醒失败,需要权限o 40082:无效分类!o 40083:无效状态码o 40084:目前只支持私有分组401 Not Authorized: 没有进行身份验证.o 40101 version_rejected Oauth版本号错误o 40102 parameter_absent Oauth缺少必要的参数o 40103 parameter_rejected Oauth参数被拒绝o 40104 timestamp_refused Oauth时间戳不正确o 40105 nonce_used Oauth nonce参数已经被使用o 40106 signature_method_rejected Oauth签名算法不支持o 40107 signature_invalid Oauth签名值不合法o 40108 consumer_key_unknown! Oauth consumer_key不存在o 40109 consumer_key_refused! Oauth consumer_key不合法o 40110 token_used! Oauth Token已经被使用o 40111 Oauth Error: token_expired! Oauth Token已经过期o 40112 token_revoked! Oauth Token不合法o 40113 token_rejected! Oauth Token不合法o 40114 verifier_fail! Oauth Pin码认证失败402 Not Start mblog: 没有开通微博403 Forbidden: 没有权限访问对应的资源.o 40301 too many lists, see doc for more info 已拥有列表上限o 40302 auth faild 认证失败o 40303 already followed 已经关注此用户o 40304 Social graph updates out of rate limit 发布微博超过上限o 40305 update comment out of rate 发布评论超过上限o 40306 Username and pwd auth out of rate limit 用户名密码认证超过请求限制o 40307 HTTP METHOD is not suported for this request 请求的HTTP METHOD不支持o 40308 Update weibo out of rate limit 发布微博超过上限o 40309 password error 密码不正确o 40314 permission denied! Need a high level appkey 该资源需要appkey拥有更高级的授权404 Not Found: 请求的资源不存在.500 Internal Server Error: 服务器内部错误.502 Bad Gateway: 微博接口API关闭或正在升级 .503 Service Unavailable: 服务端资源不可用.【人人网分享错误代码大全】<1> 一个未知的错误发生<2> 服务临时不可用<3> 未知的方法<4> 应用已达到设定的请求上限<5> 请求来自未经授权的IP地址<6> 当前用户session key过期了(已过期)<7> rest api调用次数超过了限制<100> 无效未知参数<101> 无效的API_KEY<102> 无效的SESSION_KEY<103> 必须是POST提交<104> 无效的签名<200> USER PERMISSIONS ERRORS<210> API_EC_PERMISSION_USER<220> API_EC_PERMISSION_ALBUM<221> <API_EC_PERMISSION_PHOTO><450> 当前用户的sessionKey过期<451> Session key specified cannot be used to call this method<452> Session key 无效. 可能传入的sessionKey格式出现错误<453> 调用此方法时,session key 是一个必须的参数<2000> 没有得到auth_token<2001> token对象中没有得到userId<2002> 用户没有登录校内网<10000> 登录失败<10201> API_EC_REST_LACKO_API_KEY<10202> API_EC_REST_LACKOF_SESSION_KEY<10203> API_EC_REST_LACKOF_CALL_ID<10600> 此接口的调用规则是: 48小时之内,一个用户最多可以调用10次<10601> Feed标题模板是无效的,标题模板中必须含有 \"{actor}\" 变量,且只含有一个<10602> 文本空,显示内容应该在30个字符之内<10603> if {target} is used, then target_ids becomes a required parameter<10604> title_data 参数不是一个有效的JSON 格式数组<10605> Feed的标题模板缺少必须的参数,或者title_data JSON数组定义的参数不完全。

新浪微博 开放平台 审核条件

新浪微博 开放平台 审核条件

新浪微博开发者平台审核规范目录∙ 1 网站应用审核o 1.1 申请资料o 1.2 微博连接o 1.3 分享按钮o 1.4 进入微博应用广场∙ 2 站内应用审核o 2.1 申请资料o 2.2 信息发送o 2.3 关注o 2.4 帐号o 2.5 内容规定o 2.6 禁止开发的应用o 2.7 关于授权o 2.8 进入微博应用广场∙ 3 关于二次排查o 3.1 例行检查o 3.2 用户举报∙ 4 审核流程及时间o 4.1 审核流程o 4.2 审核时间o 4.3 审核驳回理由明细∙ 5 应用官方微博加V认证流程网站应用审核申请资料资料填写完整,包括与网站相符合的应用图标和正确的应用文字描述、开发者联系方式等。

微博连接∙合作网站必须添加连接/登录入口,采用标准登录按钮,微博连接标准按钮分特大、大、中、小和图标三种:连接按钮标准。

∙合作网站必须为从网站登录的用户提供便于查找的连接入口,需放置在首页、登录页、注册页等位置。

∙用户点击连接按钮后,将会带领其来到认证授权页。

网站必须使用OAuth的方式进行帐号登录。

用户点击“直接登录”或完成绑定帐户之后,跳转到合作网站主页或内容页,欢迎信息中必须包含微博图标以表明该用户是通过微博帐户登录的。

∙必须引导第一次连接的用户进入连接设置页面,需告之用户哪些动作会发送信息到微博;在合作网站的用户设置页面增加“微博设置”一项,设置内容主要有两部分:1. 绑定/解除微博:合作网站退出/解除与微博的连接流程需流畅有效,保证用户退出或解除连接后不再向主页发送任何新鲜事。

2. 同步设置:告之用户哪些动作会发送新鲜事。

分享按钮分享按钮的位置和UI对分享效果有重要影响,需将分享按钮放置在方便用户看到、用户乐于互动的区域,如文章标题附近、文章结尾处评论附近等。

进入微博应用广场网站应用不在应用广场展示。

包括帐号绑定、分享按钮、Xweibo、DZ插件。

站内应用审核规范具体内容资料资料完整圆角图标、应用描述、开发者联系方式功能功能合格关注功能、信息发送、帐号等功能符合要求体验设计美观颜色搭配美观、按钮等元素清晰、结构清晰易用性高流程顺畅不重复、门槛低、主要功能明显易点击意图清晰产品体现的功能能让用户清晰地感知应用UI设计请参考:/aW0et0申请资料申请资料完整,包括标准的应用图标和正确的应用描述、准确的开发者信息等。

新浪微博应用开发的一个解决方案

新浪微博应用开发的一个解决方案

新浪微博应用开发的一个简易方案PHP+新浪微博开放平台+新浪云平台(SAE)贺利坚2012.2.25目 录一、必须交待的几个问题 (1)二、PHP+新浪微博开放平台+新浪云平台(SAE)方案的基础 (2)三、建立微博应用的过程 (4)四、PHP SDK中Demo程序简析 (18)五、进一步学习的走向和有用的资源 (27)附录1:新浪微博旧版API中的PHP例程 (29)附录2:新浪微博开放平台WeiboClient类的公共方法 (59)一、必须交待的几个问题这是一个不严肃的册子,主要因为:(1)作者不精通PHP,对PHP涉及的内容早有了解,但没有专门学习,之前更没有做过程序。

在决定试着体验用PHP开发微博应用后,也仅用半个上午的时间,浏览了PHP的一般语法;(2)这本册子是匆忙完成的,学习时间一天半,写作时间一天。

主要是因为并不打算在此方面深入做下去,也没有那么多的时间;(3)册子中除了作者自写的文字,其他材料全部来自新浪微博开放平台(/)和新浪云平台(/),有拼凑之嫌。

但是,这是一本很实用的册子,起码作者这样认为。

以作者飞速的学习进度,有力地说明这是快速了解微博应用开发的最好材料,给出的解决方案也是最适合初学者构建微博应用开发的。

一旦能够在浏览器中看到自己的代码操纵着微博中的信息,微博应用开发中不少概念将生动起来,再进一步做一些工作将不再那样艰苦。

尽管不严肃,还是决定写出来。

针对零基础的开发者,现在还没有一个适合的资料。

我的贡献在于为刚起步开发的读者整理出了个头绪,提出了一种最简便的学习方案。

从初学者的角度,凭着自己尚热乎的初学者感觉,帮其他初学者一把。

因为不精通,很多相应平台上能说清楚的事情,直接给出链接,而不再多言。

平台上的文字有些太多,初学者没看几个字,就被绕糊涂了。

我的贡献是指出看这些庞杂文档的一个建议,并尽量引导读者动手做,早些找到感觉。

所以,这本小册子仅是在微博应用开发上帮助读者起步的。

国内给网站分享链接

国内给网站分享链接

国内各大网站分享地址的链接分享到qq空间:/cgi-bin/qzshare/cgi_qzshare_onekey?url=http分享到百度搜藏:/do/add?it=title&iu=http&fr=ien分享到新浪微博:/share/share.php?title=title&url=http&source=bookmark(可跟&appkey=?)分享到人人:/share/buttonshare.do?link=http&title=title分享到开心网:/repaste/share.php?rtitle=title&rurl=http&rcontent=?(主要内容)分享到搜狐白社会:/share/blank/add.do?link=http分享到51社会:/share/share.php?type=8&title=title&vaddr=http分享到淘江湖:/share/addShare.htm?url=http分享到搜狐微博:/third/post.jsp?url=http&title=title&content=?(主要内容)分享到豆瓣:/recommend/?url=http&title=title分享到腾讯微博(需转为utf-8):/share/share.php?title=title&url==http&source=1000012&site=来源网址&pic=分享到百度空间:/share/?url=http&title=title分享到飞信:/api/share?source=http(来源)&title=title&url=http分享到谷歌/bookmarks/mark?op=add&bkmk=http&title=title分享到有道书签:/login?service=ocollect&back_url==http分享到QQ收藏:/post?from=3&title=title&uri=http&jumpback=2&noui=1分享到雅虎收藏:/popadd.html?url=http&title=title分享到115收藏:/?ac=add&url=htt p&title=title分享到嘀咕网:/diguShare/fireFox_login.jsp?&title2=title&url2=http分享到谷歌Buzz:/buzz/post?url=http实际应用参考:<ahref="javascript:window.open('/share/?url='+encodeURIComponent(docu ment.location.href)+'&title='+encodeURIComponent(document.title));void(0);">百度</a>。

新浪微博开发者平台应用申请及配置说明

新浪微博开发者平台应用申请及配置说明

第一章常见问题说明在本项目微博开发文档中大家使用新浪微博官方提供的WeiboSDKDemo为大家演示项目基本环境的搭建,后面的开发也是在此基础上进行开发,目的是方便大家学习和理解项目结构、新浪微博的认证授权及新浪微博API调用。

WeiboSDKDemo使用的appkey、授权回调地址和debug.keystore均是新浪微博官提供的,并且WeiboSDKDemo的包名不能更改,在大家熟悉项目结构之后,也可以自己在新浪微博开放平台上申请开发者账号,并且创建自己的应用,就不必使用新浪微博官方提供的了,创建过程可以参考第二章和第三章。

在使用WeiboSDKDemo注意事项:1.使用WeiboSDKDemo时不能更改WeiboSDKDemo中所用的包名(com.sina.weibo.sdk.demo),在src根目录下的Constants.java文件中提供了AppKey ,一定要使用这个appKey,否则将会导致新浪官方的授权认证服务器上的签名认证失败。

2.一定要使用Demo中提供的debug.keystore3.MD5工具是根据keystore来生成签名的,不同的keystore生成的签名是不一样的。

此Demo的签名是用官网提供的keystore生成的,若要顺利运行Demo程序,需要进行设置或是替换keystore,两种方法可以选择其中一种进行操作:方法一:替换keystore,把Android默认的debug.keystore(在C:\Users\xxxx\.android目录下)替换成官方在Hithub上提供的debug.keystore。

方法二:在Eclipse中设置工程keystore,在Eclipse中点击“Windows -> Preferences -> Android -> Build”,在Custom debug keystore 中选择Demo中的debug.keystore,点击Apply -> OK,Demo即可正常运行。

新浪微博AppKey大全-推荐下载

新浪微博AppKey大全-推荐下载

新浪微博AppKey大集合:IPhone,IPAD,Android,Google,Baidu应有尽有:如果有一天,你和新浪微博扯上关系,或者想玩转新浪微博的“来自”尾巴,那就到这来找吧:小米手机App Key:xiaomiApp Secret:3MqAdNoRLHomm4AECoURl7gds1sUIjunPanda.memoApp Key:31641035App Secret:6a7c98c1eef2109622d0a08199a35bef周博通微博管家App Key:202088835App Secret:9567e3782151dcfd1a9bd2dd099d957fAndroid平板客户端App Key:2540340328App Secret:886cfb4e61fad4e4e9ba9dee625284ddGoogle.NexusApp Key:1206405345App Secret:fa6095e113cd28fde6e14c7b7145c5c5Spring微博.AndroidApp Key:1905839263App Secret:36b51c6ebf2dd3e5361f80f6c4506267Acer平板电脑App Key:783190658App Secret:7f63ae9eb3c1438e9f8932748ca8a341iphone客户端App Key:5786724301App Secret:5Jao51NF1i5PDC91hhI3ID86ucoDtn4Capp梦工厂微博App Key:569452181App Secret:bbd573c3052999adcd026cbf88ffbf8eFIT随享.iPhone版App Key:31024382App Secret:25c3e6b5763653d1e5b280884b45c51fiPad客户端App Key:2849184197App Secret:7338acf99a00412983f255767c7643d0iPhone微博助手App Key:2702428363App Secret:82d9b7c386000b0de0711a20f146fa44Weico.Android版App Key:211160679App Secret:63b64d531b98c2dbff2443816f274dd3weico.iphone版App Key:82966982App Secret:72d4545a28a46a6f329c4f2b1e949e6a联想乐Pad客户端App Key:2440435914App Secret:70dc2ae26780817793c9c533092171dd摩托罗拉XOOMApp Key:2190063733App Secret:9222f119671ebf566b74220768014afd三星GalaxySApp Key:3442868347App Secret:07b27d2c098eda5eec681abdde832a51android手机App Key:androidApp Secret:5l0WXnhiY4pJ794KIJ7Rw5F45VXg9sjo黑莓客户端App Key:blackberryApp Secret:ivij24vyWpP0zE0M03r56RL2u8nu0L66三星GalaxyTabApp Key:sxtabApp Secret:6b2BhcdpiCdyZaIh4O3S1zHAUoC6Zpql三星Android智能手机客户端App Key:sxandroidApp Secret:tYQO8S1RndCGgI3qNbiCEjG3cVaeOvq7htcApp Key:htcApp Secret:ybQv5D6BC2bIOqYV2wCsIs0dX9vV0xIGSonyXperaApp Key:x10App Secret:rPVsSGvnz8erJ7w8sIICKEE70wQMRswUMotoApp Key:me511App Secret:5AgbUpV7fL2APXOkI04QnRhlGUdUlwy0乐phoneApp Key:lpApp Secret:5EmMeHqPOYsLSQ2zjrdXHoUhqtD4QYGx魅族M9App Key:meizu_m9App Secret:WQnVIAWDBmR9XV86YNAO97P3Xgk21az9S60手机App Key:s60App Secret:AbLmkn77N8j72iyE2Aup5RoRN8C0M3E5天翼3G互联网手机App Key:tianyiApp Secret:DX2eXTXpGhnTeSoMcJs2BCpXQQKyzehfTCL互联网手机App Key:tclApp Secret:gPvIKBER6kF2wAe6POQF9mTL1W9I9Y8C中兴手机App Key:zhongxingApp Secret:sc2GRZT16abrHaUps2cydiQKvWizy8IE华为手机App Key:huaweiApp Secret:QUoQoFbH7LVmuCBhEwMKzC65R1JZDX0t我的天语手机K-TouchApp Key:k_touchApp Secret:7d125GronKUP1rcgkOb8rqVjh2Q44fdx我的K-Touch天语W700App Key:tyw700App Secret:nj3PK1AvukNAwXihZZg9PN6H文明用语b5QQb我的酷派大观9930App Key:yulongApp Secret:9qCZ3L9riYQRz4FznnwUGrv2uPjqBGEm我的coolpad酷派终端App Key:coolpadApp Secret:SuQmVobcpJxaNZRThXR4xsytbHUMOdFBandroid5l0WXnhiY4pJ794KIJ7Rw5F45VXg9sjo=========================================hong_androidd6YLHfS5dfdB2YcNDOpt97Zvqav20orv=========================================iphone5Jao51NF1i5PDC91hhI3ID86ucoDtn4C=========================================galaxy_sRXZstlbVx7384oNWkeMWamsSEwfeEgii=========================================htcybQv5D6BC2bIOqYV2wCsIs0dX9vV0xIGx10rPVsSGvnz8erJ7w8sIICKEE70wQMRswU=========================================me5115AgbUpV7fL2APXOkI04QnRhlGUdUlwy0=========================================meizu_m9WQnVIAWDBmR9XV86YNAO97P3Xgk21az9=========================================xiaomi3MqAdNoRLHomm4AECoURl7gds1sUIjun========================================= dellpadz9UbGHARtNkPZbZvLIw8UvVZlTOtVfHs========================================= lp5EmMeHqPOYsLSQ2zjrdXHoUhqtD4QYGx=========================================sxtab6b2BhcdpiCdyZaIh4O3S1zHAUoC6Zpql=========================================sxandroidtYQO8S1RndCGgI3qNbiCEjG3cVaeOvq7=========================================s60AbLmkn77N8j72iyE2Aup5RoRN8C0M3E5========================================= blackberryivij24vyWpP0zE0M03r56RL2u8nu0L66=========================================tianyiDX2eXTXpGhnTeSoMcJs2BCpXQQKyzehf========================================= tclgPvIKBER6kF2wAe6POQF9mTL1W9I9Y8C=========================================huaweiQUoQoFbH7LVmuCBhEwMKzC65R1JZDX0t=========================================coolpadSuQmVobcpJxaNZRThXR4xsytbHUMOdFB=========================================tyw700nj3PK1AvukNAwXihZZg9PN6Hcaob5QQb=========================================yulong9qCZ3L9riYQRz4FznnwUGrv2uPjqBGEm=========================================k_touch7d125GronKUP1rcgkOb8rqVjh2Q44fdx=========================================zhongxingsc2GRZT16abrHaUps2cydiQKvWizy8IE=========================================1.以下App Key和App Secret适合修改于第三方客户端(例如Yibo,Weico) =========================================yibo3105114937985e8f106a5db148d1a96abfabcd9043=========================================联想乐pad244043591470dc2ae26780817793c9c533092171dd========================================= Spring微博.Android190583926336b51c6ebf2dd3e5361f80f6c4506267=========================================摩托罗拉xoom21900637339222f119671ebf566b74220768014afd========================================= weico.android21116067963b64d531b98c2dbff2443816f274dd3=========================================app梦工厂微博569452181bbd573c3052999adcd026cbf88ffbf8e=========================================微博助手270242836382d9b7c386000b0de0711a20f146fa44========================================= FIT随享微博3102438225c3e6b5763653d1e5b280884b45c51f=========================================宏基acer7831906587f63ae9eb3c1438e9f8932748ca8a341========================================= Android平板2540340328886cfb4e61fad4e4e9ba9dee625284dd========================================= weico.iphone8296698272d4545a28a46a6f329c4f2b1e949e6a========================================= ipad客户端28491841977338acf99a00412983f255767c7643d0=========================================微博物语iphone2735371158fa2318d3281101f0c9b1be38f499dda4========================================= PushBox_iPad196572674555377ca138fa49b63b7767778ca1fb5a=========================================微格iPhone客户端20277615705042214816d14b2d9e8ae8255f96180d========================================= weicoPro232354707116ed80cc77fea11f7f7e96eca178ada3========================================= PoMe微博杂志213557699537b190bebb816c11c0bd1f996a7ca49f========================================= ArmingWeibo26127676074f988ffd2fba40eaab89dc4aa4c5389d========================================= GIF快手91534551588b51e31ddbe926089706e4500c55d2d=========================================美图秀秀4229079448bc58f8c7179369d4bfa914656c161b15=========================================三星GalaxyTab3510766076f97dfdd530d85eaaee45e63ee47445a3========================================= WeicoGIF1078446352c698c95df62b060734d3d0a9e8787a9a=========================================围脖Call1008696810bd464ae2cee0e5d7234a12d06c9476ff========================================= webOS12626736996185cf040b403dfa35de9678b5e35baf。

移动应用开发中的第三方登录集成方法

移动应用开发中的第三方登录集成方法

移动应用开发中的第三方登录集成方法随着智能手机的普及,移动应用的开发也成为了一个热门的领域。

许多应用都需要用户进行登录,并获取用户的个人信息,以提供个性化的服务。

为了简化用户的登录流程,许多开发者选择集成第三方登录功能,允许用户使用其它平台的账号进行登录。

本文将介绍移动应用开发中的第三方登录集成方法,并重点讨论几个常用的第三方登录平台。

一、集成第三方登录的优势第三方登录是指允许用户使用已有的第三方平台账号登录一个应用,例如使用微信、QQ、微博等账号登录一个应用。

与传统的账号密码登录相比,第三方登录具有以下几个优势。

首先,方便快捷。

用户可以直接使用已有的账号登录,无需额外注册,简化了登录流程,提高了用户体验。

其次,用户信息获取更全面。

许多第三方平台会要求用户授权,允许应用获取用户的个人信息。

这对于一些社交类应用来说尤为重要,可以帮助应用更好地了解用户的兴趣爱好,提供更贴心的服务。

最后,提高应用的可信度。

许多用户对于通过第三方平台登录的应用更加信任,相比于自己注册的账号更加安全可靠。

二、常用的第三方登录平台目前市场上有许多第三方登录平台可供开发者选择,下面将介绍几个常用的平台及其集成方法。

1. 微信登录微信登录是目前应用最广泛的第三方登录方式之一。

集成微信登录需要在微信开放平台注册开发者账号,并创建应用。

在应用中,可以获取到一个AppID,用于在应用中进行集成。

在移动应用中,可以通过调用微信提供的SDK来实现与微信的交互。

用户点击登录按钮后,应用会打开微信客户端进行授权,一旦用户授权成功,微信会返回一个授权code给应用。

应用拿到授权code后,可以通过微信提供的接口,获取用户的个人信息,例如昵称、头像等。

2. QQ登录QQ登录也是非常常见的第三方登录方式之一。

集成QQ登录需要在腾讯开放平台注册开发者账号,并创建应用。

在应用中,可以获取到一个AppID和AppKey,用于在应用中进行集成。

与微信登录类似,QQ登录也需要通过调用QQ提供的SDK来实现与QQ的交互。

新浪微博开放平台申请详细教程

新浪微博开放平台申请详细教程

新浪微博开放平台申请详细教程
新浪微博开放平台申请详细教程
本教程适用于叮当APP平台用户开通新浪微博分享功能。

总得来说,让你的应用在新浪微博开放平台上运营,只需要通过简单的六个步骤:
如何成为开发者
1.创建微博帐号
在开发者页面点击“登录”或者“创建应用”,通过帐号登录成为一名开发者。

一个新浪微博帐号可以管理10 个不同的应用,建议开发人员使用官方微博的帐号,以便统一管理。

2.选择应用类型
点击“创建应用”,即进入目标应用的类型选择环节。

请根据应用类型的提示,选择相应的应用创建流程。

3.开发者信息设置
请在开发者信息设置页填写真实资料。

成为新浪微博认证的开发者,你需要通过邮箱验证和手机验证。

我们会给你填写的邮箱和手机号发送验证信息,请根据提示验证你的身份。

请注意:开发者类型一经填写,不可修改。

个人开发者不可接入微博支付业务, 请谨慎选择。

创建应用
资料填写注意事项
当完成邮箱验证之后,便进入创建应用的资料填写环节。

请注意以下几点:
(1)图标:
应用广场展示的应用图标尺寸为80*80 像素,大小不超过2M,支持PNG、JPG 格式,请提供合适的图标。

设计参考:应用设计规范
(2)应用分类:
你可以根据所开发的应用类型选择3 个标签,以第一个标签确定应用的主要分类。

请确保应用分类正确,否则无法通过审核。

(3)应用分类:绑定域名一定要选择是。

然后绑定:****
最后等应用提交审核后将APPKEY 和APP SECRET 发送给客服人员。

app分享代码

app分享代码

有时候开发者想给我们的应用添加一个分享到各大社交平台的功能,一直苦于没有例子,这也需要时间,还不如集成第三方的分享组件,下面源码和开发步骤附上,希望对各位开发者有所帮助1.申请应用 AppKey如果您已经在友推添加过App并已生成AppKey,可跳过本步骤直接进入3.2继续。

申请方法:访问友推网站后台,登录后进入应用列表,添加需要集成友推组件的 App,添加成功后可获取应用的 AppKey。

2.申请社交平台appkey集成前您需要为您的应用在各大社交网站的开放平台申请账号并通过审核,否则只能调用系统的分享菜单,无法跟踪分享的回调事件及统计平台网址微信 新浪微博 腾讯微博 QQ空间、QQ /微信好友 人人 豆瓣(暂未支持) /FaceBook(暂未支持) https://Twitter(暂未支持) https://3.引用友推库项目将youtui-lib项目库和应用工程放在同一个目录下在 Package Explorer 中右键点击工程的根目录,选择 Properties(属性),然后点击,在Android选项点击Add添加youtui-lib*/4.注册需要分享的平台4-1.配置各分享平台key,该配置文件为youtui_sdk.xml,配置完放入工程的assets 文件夹。

4-2.如果需要分享到哪个平台就将该平台的Enable属性设置为true.4-3.如果需要将某个平台排列到前面,只需要改变它在youtui_sdk.xml文件中的位置即可。

<?xml version="1.0"encoding="utf-8"?><KeyInfo><!-- 分享平台的注册信息,一定要填入在相应平台注册的正确信息,不然应用无法完成授权,也无法进行分享,enable填写true或者false属性决定是否分享该平台--><!-- 友推sdk注册地址 : http://youtui.mobi/ --><YouTui AppKey=""/><!-- 微信和朋友圈注册:https:/// --><Wechat AppId=""Enable=""/><WechatMoments AppId=""Enable=""/><!-- 新浪微博注册地址:/ --><SinaWeibo AppKey=""AppSecret=""Enable=""RedirectUrl=""/><!-- QQ,QQ空间,腾讯微博注册地址:/ --><QQ AppId=""AppKey=""Enable=""/><QZone AppId=""AppKey=""Enable=""/><TencentWeibo AppId=""AppKey=""Enable=""/><!-- 人人注册地址: / --><Renren AppKey=""AppId=""Enable=""SecretKey=""/><ShortMessage Enable=""/><Email Enable=""/><!-- 调用系统分享,适用于暂时没有申请到key的分享,该分享不会获得积分,也不会被统计到 --><More Enable="true"/></KeyInfo>5.在AndroidManifest.xml 注册权限<!-- 检测网络状态 --><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><!-- 获取mac地址作为用户的备用唯一标识 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- 获取用户手机的IMEI,用来唯一的标识用户。

C#之回调地址

C#之回调地址

C#之回调地址回调地址指的是授权完成后回调的地址链接。

⽤户通过平台来访问您的应⽤的时候,平台会把相关的上下⽂参数和state通过这个回调地址传给你:新浪微博回调地址redirect_url(授权回调页)的设置格式⾸先注册成为新浪微博开放平台开发者,并填写基本信息,进⾏邮箱确认。

之后创建应⽤新浪app,就会获得app key , app secret.新浪微博回调地址redirect_url(授权回调页)的设置格式:/apps/appKey/privilege/oauth例如:appKey=3564760100redirect_url=/apps/3564760100/privilege/oauth新浪app的设置⾥⾯的授权回调页地址[应⽤信息-->⾼级信息]与您代码中REDIRECT_URL参数的地址⼀致即可.其实就是:假如你的web是,但是⽀持qq登陆,⽤户通过点击qq登陆,然后使⽤qq的账号密码,登陆ok最后⼜跳转到。

这就是回掉地址QQ:这个讲解的清楚:https:///article/b87fe19e93539052183568f5.html⽀付宝的回掉地址接⼝:https:///question/1992220916514111027.html⽀付宝接⼝回调地址的⽅法:⾸先你要去⽀付宝申请到⽀付宝⽹站的商家服务接⼝,等通过后,他会有相关的参数下放,然后去⽀付宝论坛下载⽀付宝接⼝⽂档和实例代码⽂件,根据这些配置好⽂件中的参数。

⽐如:⽀付宝账户、⽀付宝商户号、⽀付宝密匙、⽀付成功后的异步和同步回调地址等。

这些参数配置好以后,⽹站⾃然会跳转⾄⽀付宝进⾏付款,付款成功后,⽀付宝⾃然会跳转到⾃⼰的⽹站,⾄于更改订单状态,那就是⾃⼰根据⽀付宝返回的参数进⾏判断和更改了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

新浪微博AppKey大集合:IPhone,IPAD,Android,Google,Baidu应有尽有:如果有一天,你和新浪微博扯上关系,或者想玩转新浪微博的“来自”尾巴,那就到这来找吧:小米手机App Key:xiaomiApp Secret:3MqAdNoRLHomm4AECoURl7gds1sUIjunPanda.memoApp Key:31641035App Secret:6a7c98c1eef2109622d0a08199a35bef周博通微博管家App Key:202088835App Secret:9567e3782151dcfd1a9bd2dd099d957fAndroid平板客户端App Key:2540340328App Secret:886cfb4e61fad4e4e9ba9dee625284ddGoogle.NexusApp Key:1206405345App Secret:fa6095e113cd28fde6e14c7b7145c5c5Spring微博.AndroidApp Key:1905839263App Secret:36b51c6ebf2dd3e5361f80f6c4506267Acer平板电脑App Key:783190658App Secret:7f63ae9eb3c1438e9f8932748ca8a341iphone客户端App Key:5786724301App Secret:5Jao51NF1i5PDC91hhI3ID86ucoDtn4Capp梦工厂微博App Key:569452181App Secret:bbd573c3052999adcd026cbf88ffbf8eFIT随享.iPhone版App Key:31024382App Secret:25c3e6b5763653d1e5b280884b45c51fiPad客户端App Key:2849184197App Secret:7338acf99a00412983f255767c7643d0iPhone微博助手App Key:2702428363App Secret:82d9b7c386000b0de0711a20f146fa44Weico.Android版App Key:211160679App Secret:63b64d531b98c2dbff2443816f274dd3weico.iphone版App Key:82966982App Secret:72d4545a28a46a6f329c4f2b1e949e6a联想乐Pad客户端App Key:2440435914App Secret:70dc2ae26780817793c9c533092171dd摩托罗拉XOOMApp Key:2190063733App Secret:9222f119671ebf566b74220768014afd三星GalaxySApp Key:3442868347App Secret:07b27d2c098eda5eec681abdde832a51android手机App Key:androidApp Secret:5l0WXnhiY4pJ794KIJ7Rw5F45VXg9sjo黑莓客户端App Key:blackberryApp Secret:ivij24vyWpP0zE0M03r56RL2u8nu0L66三星GalaxyTabApp Key:sxtabApp Secret:6b2BhcdpiCdyZaIh4O3S1zHAUoC6Zpql三星Android智能手机客户端App Key:sxandroidApp Secret:tYQO8S1RndCGgI3qNbiCEjG3cVaeOvq7htcApp Key:htcApp Secret:ybQv5D6BC2bIOqYV2wCsIs0dX9vV0xIGSonyXperaApp Key:x10App Secret:rPVsSGvnz8erJ7w8sIICKEE70wQMRswUMotoApp Key:me511App Secret:5AgbUpV7fL2APXOkI04QnRhlGUdUlwy0乐phoneApp Key:lpApp Secret:5EmMeHqPOYsLSQ2zjrdXHoUhqtD4QYGx魅族M9App Key:meizu_m9App Secret:WQnVIAWDBmR9XV86YNAO97P3Xgk21az9S60手机App Key:s60App Secret:AbLmkn77N8j72iyE2Aup5RoRN8C0M3E5天翼3G互联网手机App Key:tianyiApp Secret:DX2eXTXpGhnTeSoMcJs2BCpXQQKyzehfTCL互联网手机App Key:tclApp Secret:gPvIKBER6kF2wAe6POQF9mTL1W9I9Y8C中兴手机App Key:zhongxingApp Secret:sc2GRZT16abrHaUps2cydiQKvWizy8IE华为手机App Key:huaweiApp Secret:QUoQoFbH7LVmuCBhEwMKzC65R1JZDX0t我的天语手机K-TouchApp Key:k_touchApp Secret:7d125GronKUP1rcgkOb8rqVjh2Q44fdx我的K-Touch天语W700App Key:tyw700App Secret:nj3PK1AvukNAwXihZZg9PN6H文明用语b5QQb我的酷派大观9930App Key:yulongApp Secret:9qCZ3L9riYQRz4Fznnw UGrv2uPjqBGEm我的coolpad酷派终端App Key:coolpadApp Secret:SuQmVobcpJxaNZRThXR4xsytbHUMOdFBandroid5l0WXnhiY4pJ794KIJ7Rw5F45VXg9sjo=========================================hong_androidd6YLHfS5dfdB2YcNDOpt97Zvqav20orv=========================================iphone5Jao51NF1i5PDC91hhI3ID86ucoDtn4C=========================================galaxy_sRXZstlbVx7384oNWkeMWamsSEwfeEgii=========================================htcybQv5D6BC2bIOqYV2wCsIs0dX9vV0xIGx10rPVsSGvnz8erJ7w8sIICKEE70wQMRswU=========================================me5115AgbUpV7fL2APXOkI04QnRhlGUdUlwy0=========================================meizu_m9WQnVIAWDBmR9XV86YNAO97P3Xgk21az9=========================================xiaomi3MqAdNoRLHomm4AECoURl7gds1sUIjun========================================= dellpadz9UbGHARtNkPZbZvLIw8UvVZlTOtVfHs========================================= lp5EmMeHqPOYsLSQ2zjrdXHoUhqtD4QYGx=========================================sxtab6b2BhcdpiCdyZaIh4O3S1zHAUoC6Zpql=========================================sxandroidtYQO8S1RndCGgI3qNbiCEjG3c VaeOvq7=========================================s60AbLmkn77N8j72iyE2Aup5RoRN8C0M3E5========================================= blackberryivij24vyWpP0zE0M03r56RL2u8nu0L66=========================================tianyiDX2eXTXpGhnTeSoMcJs2BCpXQQKyzehf========================================= tclgPvIKBER6kF2wAe6POQF9mTL1W9I9Y8C=========================================huaweiQUoQoFbH7LVmuCBhEwMKzC65R1JZDX0t=========================================coolpadSuQmVobcpJxaNZRThXR4xsytbHUMOdFB=========================================tyw700nj3PK1AvukNAwXihZZg9PN6Hcaob5QQb=========================================yulong9qCZ3L9riYQRz4FznnwUGrv2uPjqBGEm=========================================k_touch7d125GronKUP1rcgkOb8rqVjh2Q44fdx=========================================zhongxingsc2GRZT16abrHaUps2cydiQKvWizy8IE=========================================1.以下App Key和App Secret适合修改于第三方客户端(例如Yibo,Weico) =========================================yibo3105114937985e8f106a5db148d1a96abfabcd9043========================================= 联想乐pad244043591470dc2ae26780817793c9c533092171dd========================================= Spring微博.Android190583926336b51c6ebf2dd3e5361f80f6c4506267=========================================摩托罗拉xoom21900637339222f119671ebf566b74220768014afd=========================================weico.android21116067963b64d531b98c2dbff2443816f274dd3=========================================app梦工厂微博569452181bbd573c3052999adcd026cbf88ffbf8e=========================================微博助手270242836382d9b7c386000b0de0711a20f146fa44========================================= FIT随享微博3102438225c3e6b5763653d1e5b280884b45c51f=========================================宏基acer7831906587f63ae9eb3c1438e9f8932748ca8a341========================================= Android平板2540340328886cfb4e61fad4e4e9ba9dee625284dd========================================= weico.iphone8296698272d4545a28a46a6f329c4f2b1e949e6a========================================= ipad客户端28491841977338acf99a00412983f255767c7643d0=========================================微博物语iphone2735371158fa2318d3281101f0c9b1be38f499dda4========================================= PushBox_iPad196572674555377ca138fa49b63b7767778ca1fb5a=========================================微格iPhone客户端20277615705042214816d14b2d9e8ae8255f96180d========================================= weicoPro232354707116ed80cc77fea11f7f7e96eca178ada3=========================================PoMe微博杂志213557699537b190bebb816c11c0bd1f996a7ca49f========================================= ArmingWeibo26127676074f988ffd2fba40eaab89dc4aa4c5389d========================================= GIF快手91534551588b51e31ddbe926089706e4500c55d2d=========================================美图秀秀4229079448bc58f8c7179369d4bfa914656c161b15=========================================三星GalaxyTab3510766076f97dfdd530d85eaaee45e63ee47445a3========================================= WeicoGIF1078446352c698c95df62b060734d3d0a9e8787a9a=========================================围脖Call1008696810bd464ae2cee0e5d7234a12d06c9476ff========================================= webOS12626736996185cf040b403dfa35de9678b5e35baf。

相关文档
最新文档