使用新浪微博开放平台api同步微博内容至自己网站

使用新浪微博开放平台api同步微博内容至自己网站

使用新浪微博开放平台api同步微博内容至自己网站(新浪云平台(SinaAppEngine)开放的是什么:Sina)

网站优化优采云 发表了文章 • 0 个评论 • 85 次浏览 • 2021-11-01 23:17 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪云平台(SinaAppEngine)开放的是什么:Sina)
  1、新浪微博开放平台()
  什么是开放的:开放平台对开发者开放的是每个用户的用户关系。开发者不像传统应用那样面对单个开发者,而是面对用户背后的整个朋友圈。每个API都提供了围绕好友与好友交流的相关功能,如发送微博、查看好友信息等。
  为什么要使用开放平台?一个开放的平台可以加快应用的推广。每个用户都可以影响周围的朋友。一旦应用程序真的很好,用户可以很容易地推荐给他的朋友,朋友可以再次推荐给他的朋友。开放的平台,更容易获得用户关系。当一个应用涉及到用户沟通时,它需要同时拥有一定的用户群和用户关系链,与如此多的用户建立关系链需要花费大量的时间和精力。微博通过草根与草根、草根与名人、名人与名人的相互关注,形成了庞大的社交网络,应用程序可以通过开放平台直接使用这个网络。
  2、新浪云平台(Sina AppEngine、SAE)
  新浪App Engine(以下简称SAE)是新浪研发中心于2009年8月开始内部开发并于2009年11月3日正式推出首个Alpha版本的国内首个公有云计算平台。SAE是新浪云的核心组件计算策略。
  SAE作为国内的公有云计算公司,从发展之初就借鉴了谷歌、亚马逊等国外公司在公有云计算方面的成功技术经验,并很快推出了与众不同的具有自身特色的云计算平台。SAE 选择中国最流行的 Web 开发语言 PHP 作为首选支持语言。Web 开发者可以使用 SVN、SDK 或 Web 版本的在线代码编辑器在 Linux/Mac/Windows 上进行开发、部署和调试。团队开发成员也可以协作,不同角色对代码和项目有不同的权限;SAE 提供了一系列分布式计算和存储服务供开发者使用,包括分布式文件存储、分布式数据库集群、分布式缓存、分布式定时服务等,这些服务将大大降低开发者的开发成本。同时,由于SAE整体架构的高可靠性和新浪的品牌保证,大大降低了开发商的运营风险。另外,作为典型的云计算,SAE采用了“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。作为典型的云计算,SAE采用“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。作为典型的云计算,SAE采用“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。
  简而言之,SAE 是一个简单高效的分布式 Web 服务开发和运营平台。
  查看更多。
  3、新浪云平台(Sina AppEngine, SAE)与新浪微博开放平台的关系
  微博应用开发成功后,需要将代码部署到Web上才能使用。也就是说,微博应用开发是通过调用新浪微博开放平台中的API来完成编程的,这些程序必须上传到SAE并在SAE上运行。
  在开发过程中,您可以搭建一个web服务器在本地运行程序,也可以选择完成传统的服务托管。但是,这两种方案都需要很多麻烦的配置。
  开发时直接将代码部署到SAE,无需任何配置,SAE为您准备了更多以后可能用到的服务。我们可以直接进入话题开发微博应用。
  SAE 是免费的(至少作为个人学习的资源),这也很重要。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪云平台(SinaAppEngine)开放的是什么:Sina)
  1、新浪微博开放平台()
  什么是开放的:开放平台对开发者开放的是每个用户的用户关系。开发者不像传统应用那样面对单个开发者,而是面对用户背后的整个朋友圈。每个API都提供了围绕好友与好友交流的相关功能,如发送微博、查看好友信息等。
  为什么要使用开放平台?一个开放的平台可以加快应用的推广。每个用户都可以影响周围的朋友。一旦应用程序真的很好,用户可以很容易地推荐给他的朋友,朋友可以再次推荐给他的朋友。开放的平台,更容易获得用户关系。当一个应用涉及到用户沟通时,它需要同时拥有一定的用户群和用户关系链,与如此多的用户建立关系链需要花费大量的时间和精力。微博通过草根与草根、草根与名人、名人与名人的相互关注,形成了庞大的社交网络,应用程序可以通过开放平台直接使用这个网络。
  2、新浪云平台(Sina AppEngine、SAE)
  新浪App Engine(以下简称SAE)是新浪研发中心于2009年8月开始内部开发并于2009年11月3日正式推出首个Alpha版本的国内首个公有云计算平台。SAE是新浪云的核心组件计算策略。
  SAE作为国内的公有云计算公司,从发展之初就借鉴了谷歌、亚马逊等国外公司在公有云计算方面的成功技术经验,并很快推出了与众不同的具有自身特色的云计算平台。SAE 选择中国最流行的 Web 开发语言 PHP 作为首选支持语言。Web 开发者可以使用 SVN、SDK 或 Web 版本的在线代码编辑器在 Linux/Mac/Windows 上进行开发、部署和调试。团队开发成员也可以协作,不同角色对代码和项目有不同的权限;SAE 提供了一系列分布式计算和存储服务供开发者使用,包括分布式文件存储、分布式数据库集群、分布式缓存、分布式定时服务等,这些服务将大大降低开发者的开发成本。同时,由于SAE整体架构的高可靠性和新浪的品牌保证,大大降低了开发商的运营风险。另外,作为典型的云计算,SAE采用了“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。作为典型的云计算,SAE采用“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。作为典型的云计算,SAE采用“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。
  简而言之,SAE 是一个简单高效的分布式 Web 服务开发和运营平台。
  查看更多。
  3、新浪云平台(Sina AppEngine, SAE)与新浪微博开放平台的关系
  微博应用开发成功后,需要将代码部署到Web上才能使用。也就是说,微博应用开发是通过调用新浪微博开放平台中的API来完成编程的,这些程序必须上传到SAE并在SAE上运行。
  在开发过程中,您可以搭建一个web服务器在本地运行程序,也可以选择完成传统的服务托管。但是,这两种方案都需要很多麻烦的配置。
  开发时直接将代码部署到SAE,无需任何配置,SAE为您准备了更多以后可能用到的服务。我们可以直接进入话题开发微博应用。
  SAE 是免费的(至少作为个人学习的资源),这也很重要。

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博短链接API开放,腾讯微博短地址API没有开放)

网站优化优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2021-11-01 20:10 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博短链接API开放,腾讯微博短地址API没有开放)
  在短地址(又称短链接、短地址等)方面,推特是经过发展后发展起来的,很多互联网网站都使用短地址。国内外有很多,但稳定可靠。国内的比较靠谱。我不怕没有墙。几家外国公司已经遭遇悲剧。所以,如果在项目中使用短地址,我还是推荐使用新浪或者其他国内的短链接服务。
  新浪微博短链接API开放,但腾讯微博短地址API未开放。我想通过不同的路径获取腾讯微博的API,但以失败告终。新浪微博短地址API不需要用户登录,直接调用即可,速度非常快。以下代码取自网站,使用CURLPOST方法供参考。
  新浪微博短链接API文档在老版本的开发文档中,但新版本没有添加:
  function shortenSinaUrl($long_url){
$apiKey='1234567890';//这里是你申请的应用的API KEY,随便写个应用名就会自动分配给你
$apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $apiUrl);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
curl_close($curlObj);
$json = json_decode($response);
return $json[0]->url_short;
}
function expandSinaUrl($short_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $apiUrl);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
curl_close($curlObj);
$json = json_decode($response);
return $json[0]->url_long;
}
  参考新浪微博的开发文档,推荐使用get方式获取。代码更简单
  function shorturl($long_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url;
$response = file_get_contents($apiUrl);
$json = json_decode($response);
return $json[0]->url_short;
}
function expandurl($short_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url;
$response = file_get_contents($apiUrl);
$json = json_decode($response);
return $json[0]->url_long;
}
  好,容易吗?
  调试上面代码的时候,需要填写自己的API key,不然肯定拿不到。
  特别说明:短地址服务现在只为经过认证的APP KEY提供服务,刚刚申请的APP KEY会提示没有权限。可以使用209678993和3818214747这两个KEY进行测试。这两个KEY的来源不明,不推荐用于生产。(感谢您的提醒)
  Jucelin 写了一个调试文档,你可以测试一下:
  长到短:://
  短到长::///S4bLBm
  参数只有2个,类型:1表示长转短,2表示短转长,后面的URL是目标域名,因为懒所以没有错误判断,新浪微博短地址不支持短地址和那么短地址是的,逻辑上应该是这样控制的。(不信你可以试试)。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博短链接API开放,腾讯微博短地址API没有开放)
  在短地址(又称短链接、短地址等)方面,推特是经过发展后发展起来的,很多互联网网站都使用短地址。国内外有很多,但稳定可靠。国内的比较靠谱。我不怕没有墙。几家外国公司已经遭遇悲剧。所以,如果在项目中使用短地址,我还是推荐使用新浪或者其他国内的短链接服务。
  新浪微博短链接API开放,但腾讯微博短地址API未开放。我想通过不同的路径获取腾讯微博的API,但以失败告终。新浪微博短地址API不需要用户登录,直接调用即可,速度非常快。以下代码取自网站,使用CURLPOST方法供参考。
  新浪微博短链接API文档在老版本的开发文档中,但新版本没有添加:
  function shortenSinaUrl($long_url){
$apiKey='1234567890';//这里是你申请的应用的API KEY,随便写个应用名就会自动分配给你
$apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $apiUrl);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
curl_close($curlObj);
$json = json_decode($response);
return $json[0]->url_short;
}
function expandSinaUrl($short_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $apiUrl);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
curl_close($curlObj);
$json = json_decode($response);
return $json[0]->url_long;
}
  参考新浪微博的开发文档,推荐使用get方式获取。代码更简单
  function shorturl($long_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url;
$response = file_get_contents($apiUrl);
$json = json_decode($response);
return $json[0]->url_short;
}
function expandurl($short_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url;
$response = file_get_contents($apiUrl);
$json = json_decode($response);
return $json[0]->url_long;
}
  好,容易吗?
  调试上面代码的时候,需要填写自己的API key,不然肯定拿不到。
  特别说明:短地址服务现在只为经过认证的APP KEY提供服务,刚刚申请的APP KEY会提示没有权限。可以使用209678993和3818214747这两个KEY进行测试。这两个KEY的来源不明,不推荐用于生产。(感谢您的提醒)
  Jucelin 写了一个调试文档,你可以测试一下:
  长到短:://
  短到长::///S4bLBm
  参数只有2个,类型:1表示长转短,2表示短转长,后面的URL是目标域名,因为懒所以没有错误判断,新浪微博短地址不支持短地址和那么短地址是的,逻辑上应该是这样控制的。(不信你可以试试)。

使用新浪微博开放平台api同步微博内容至自己网站(weibo.sdk.android--这个是sina微博微博登陆认证的源码)

网站优化优采云 发表了文章 • 0 个评论 • 128 次浏览 • 2021-11-01 20:07 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(weibo.sdk.android--这个是sina微博微博登陆认证的源码)
  首先要告诉大家的是,新浪微博API项目已经转移到GitHub上,原来的Google Code()项目没有更新。如果使用旧代码运行登录,会弹出网页错误bug。最新地址在:
  界面也从之前的V1转为V2。具体信息请参考:。但是如果你像我一样从头开始,不用担心,直接去github下载最新的SDK即可。
  下载源代码后解压:
  
  哎,本来不想关心各个文件夹在干什么的……不过想起博客的格言……还是有问题,别偷懒,想问题……
  weibo.sdk.android ---- 这是新浪微博登录认证的源码。它是一个 Android Lib 项目。什么是ALP这里就不解释了。同学们可以参考链接( )。
  weibo.sdk.android.api ---- 这是新浪微博交互界面的源码,是一个ALP。
  weibo.sdk.androi.sso ---- 这是新浪微薄的SSO源码。如果不了解SSO,请看百度百科:
  weibo.sdk.android.sso.demo ---- 最后一个是我们需要的Demo,我们可以在Eclipse中引入这个项目。
  凌乱的 Doc ---- 我猜它是在 linux 下写的还是什么?无论如何,这是技术文档。新浪真是懒得开发。本文档中的某些内容不再有效,例如 Android 权限声明。无论如何,请随意看看。
  weibo.sdk.android.sso.jar ---- 这是你需要引入到自己项目中的jar包。
  在这个文章中,我们不谈其他,只谈调用sina接口进行登录认证,其余功能请参考官方Demo。
  首先,我们创建一个Android项目,命名为LoginTest
  创建布局文件:
  创建活动并在其中放置一个按钮。点击按钮后,会弹出新浪认证窗口。认证成功后,界面上会显示认证文本。
  package com.example.logintest;
import java.text.SimpleDateFormat;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.Weibo;
import com.weibo.sdk.android.WeiboAuthListener;
import com.weibo.sdk.android.WeiboDialogError;
import com.weibo.sdk.android.WeiboException;
public class MainActivity extends Activity {
private Weibo mWeibo;
private static final String CONSUMER_KEY = "966056985";// 替换为开发者的appkey,例如"1646212860";
private static final String REDIRECT_URL = "http://www.sina.com";
public static Oauth2AccessToken accessToken;
private TextView mText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL);
Button btn = (Button) findViewById(R.id.button1);
mText = (TextView) findViewById(R.id.textView1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mWeibo.authorize(MainActivity.this, new AuthDialogListener());
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class AuthDialogListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
MainActivity.accessToken = new Oauth2AccessToken(token, expires_in);
if (MainActivity.accessToken.isSessionValid()) {
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
.format(new java.util.Date(MainActivity.accessToken
.getExpiresTime()));
mText.setText("认证成功: \r\n access_token: " + token + "\r\n"
+ "expires_in: " + expires_in + "\r\n有效期:" + date);
try {
Class sso = Class
.forName("com.weibo.sdk.android.api.WeiboAPI");// 如果支持weiboapi的话,显示api功能演示入口按钮
} catch (ClassNotFoundException e) {
// e.printStackTrace();
Log.i("H3c", "com.weibo.sdk.android.api.WeiboAPI not found");
}
AccessTokenKeeper.keepAccessToken(MainActivity.this,
accessToken);
Toast.makeText(MainActivity.this, "认证成功", Toast.LENGTH_SHORT)
.show();
}
}
@Override
public void onError(WeiboDialogError e) {
Toast.makeText(getApplicationContext(),
"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "Auth cancel",
Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(getApplicationContext(),
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
}
  将使用 AccessTokenKeeper 对象。该对象用于存储认证信息。可以从Demo中获取,直接复制粘贴即可。
  最后,添加权限(那一团糟的描述。doc 有点错误):
  
  
  啊,就是这样。
  一开始,我在纠结那个新浪APP_KEY,也就是应用中的CONSUMER_KEY。我认为要获得APPKEY,我必须上传工作,但现在我还没有做到。如何上传?这是一个鸡和蛋的Bug。后来想太多了!APPKEY的作用应该是在认证登录时弹出的登录框中显示你的应用名称。比如Demo中显示的是“新浪在你的掌中”。我们在开发应用等的时候可以参考demo先做功能,等所有功能完成后,上传APP获取APPKEY,然后替换。
  这篇文章纯粹是我今天的初步研究所写的。如有不对之处,请指出!
  最后附上新浪微薄的API:%E5%B9%B3%E5%8F%B0%E6%A6%82%E8%BF%B0 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(weibo.sdk.android--这个是sina微博微博登陆认证的源码)
  首先要告诉大家的是,新浪微博API项目已经转移到GitHub上,原来的Google Code()项目没有更新。如果使用旧代码运行登录,会弹出网页错误bug。最新地址在:
  界面也从之前的V1转为V2。具体信息请参考:。但是如果你像我一样从头开始,不用担心,直接去github下载最新的SDK即可。
  下载源代码后解压:
  
  哎,本来不想关心各个文件夹在干什么的……不过想起博客的格言……还是有问题,别偷懒,想问题……
  weibo.sdk.android ---- 这是新浪微博登录认证的源码。它是一个 Android Lib 项目。什么是ALP这里就不解释了。同学们可以参考链接( )。
  weibo.sdk.android.api ---- 这是新浪微博交互界面的源码,是一个ALP。
  weibo.sdk.androi.sso ---- 这是新浪微薄的SSO源码。如果不了解SSO,请看百度百科:
  weibo.sdk.android.sso.demo ---- 最后一个是我们需要的Demo,我们可以在Eclipse中引入这个项目。
  凌乱的 Doc ---- 我猜它是在 linux 下写的还是什么?无论如何,这是技术文档。新浪真是懒得开发。本文档中的某些内容不再有效,例如 Android 权限声明。无论如何,请随意看看。
  weibo.sdk.android.sso.jar ---- 这是你需要引入到自己项目中的jar包。
  在这个文章中,我们不谈其他,只谈调用sina接口进行登录认证,其余功能请参考官方Demo。
  首先,我们创建一个Android项目,命名为LoginTest
  创建布局文件:
  创建活动并在其中放置一个按钮。点击按钮后,会弹出新浪认证窗口。认证成功后,界面上会显示认证文本。
  package com.example.logintest;
import java.text.SimpleDateFormat;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.Weibo;
import com.weibo.sdk.android.WeiboAuthListener;
import com.weibo.sdk.android.WeiboDialogError;
import com.weibo.sdk.android.WeiboException;
public class MainActivity extends Activity {
private Weibo mWeibo;
private static final String CONSUMER_KEY = "966056985";// 替换为开发者的appkey,例如"1646212860";
private static final String REDIRECT_URL = "http://www.sina.com";
public static Oauth2AccessToken accessToken;
private TextView mText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL);
Button btn = (Button) findViewById(R.id.button1);
mText = (TextView) findViewById(R.id.textView1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mWeibo.authorize(MainActivity.this, new AuthDialogListener());
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class AuthDialogListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
MainActivity.accessToken = new Oauth2AccessToken(token, expires_in);
if (MainActivity.accessToken.isSessionValid()) {
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
.format(new java.util.Date(MainActivity.accessToken
.getExpiresTime()));
mText.setText("认证成功: \r\n access_token: " + token + "\r\n"
+ "expires_in: " + expires_in + "\r\n有效期:" + date);
try {
Class sso = Class
.forName("com.weibo.sdk.android.api.WeiboAPI");// 如果支持weiboapi的话,显示api功能演示入口按钮
} catch (ClassNotFoundException e) {
// e.printStackTrace();
Log.i("H3c", "com.weibo.sdk.android.api.WeiboAPI not found");
}
AccessTokenKeeper.keepAccessToken(MainActivity.this,
accessToken);
Toast.makeText(MainActivity.this, "认证成功", Toast.LENGTH_SHORT)
.show();
}
}
@Override
public void onError(WeiboDialogError e) {
Toast.makeText(getApplicationContext(),
"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "Auth cancel",
Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(getApplicationContext(),
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
}
  将使用 AccessTokenKeeper 对象。该对象用于存储认证信息。可以从Demo中获取,直接复制粘贴即可。
  最后,添加权限(那一团糟的描述。doc 有点错误):
  
  
  啊,就是这样。
  一开始,我在纠结那个新浪APP_KEY,也就是应用中的CONSUMER_KEY。我认为要获得APPKEY,我必须上传工作,但现在我还没有做到。如何上传?这是一个鸡和蛋的Bug。后来想太多了!APPKEY的作用应该是在认证登录时弹出的登录框中显示你的应用名称。比如Demo中显示的是“新浪在你的掌中”。我们在开发应用等的时候可以参考demo先做功能,等所有功能完成后,上传APP获取APPKEY,然后替换。
  这篇文章纯粹是我今天的初步研究所写的。如有不对之处,请指出!
  最后附上新浪微薄的API:%E5%B9%B3%E5%8F%B0%E6%A6%82%E8%BF%B0

使用新浪微博开放平台api同步微博内容至自己网站(8款国外开源微博,搭建自己的微博轻松又简单)

网站优化优采云 发表了文章 • 0 个评论 • 78 次浏览 • 2021-10-30 09:21 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(8款国外开源微博,搭建自己的微博轻松又简单)
  文章标签文章分类 MySQL 数据库
  ©版权归作者所有:原创 作品来自51CTO博主朗基江湖。如需转载请注明出处,否则将追究法律责任
  轻松打造自己的“推特”微博平台!开源程序是免费的
  当推特风靡全球,新浪微博主导的群博时代爆发时,几乎所有的SNS产品都采用微博作为标准配置。你也喜欢建立自己的微博吗?
  自己开发微博产品并不容易,但在分享精神遍及全球互联网领域的今天,其中的秘诀是什么?自己建立一个虚假的“推特”微博。从网上搜集了十个开源微博程序,手握这些开源代码,搭建自己的微博轻而易举。
  如果你也有好的微博开源程序,请给我留言。IT人的精神是:分享!
  先介绍两条中文开源微博:
  易话
  接口与饭否类似,API接口与饭否相似。基于PHP和MySQL,点击这里下载源代码。
  网页烹饪
  基于PHP和MySQL,支持与机外同步,点此下载源代码。
  以下是8条国外开源微博:
  斋库
  Jaiku(演示地址)是一个基于Python的微博平台。2007年被谷歌收购,之后并未成功运营。不得不在 2009 年宣布暂停维护。 后来,Google 将 Jaiku 完全开源并进行了切换。在 AppEngine 上运行。Jaiku 目前是完全开源的,可供用户免费下载。可以到Jaiku源代码项目地址,使用SVN工具下载其源代码。
  Laconica/ StatusNet
  Laconica/StatusNet(演示地址)是一个基于PHP和MySQL的开源微博系统。也是可以实现微博常用功能的推特克隆版。国外很多微博系统都是通过这个开源系统搭建的。Laconica 得到了大量应用系统的支持,包括 Twitterfeed、Hellotxt 和 Gravity,它们已经成熟稳定。单击此处下载其源代码。
  永克利
  Yonkly 是一个基于 Asp.Net 的开源微博。除了开源版本,它还拥有高级的独立托管版本。
  弗洛波
  Floopo是一个基于PHP和MySQL的免费微博系统。它的功能与推特非常相似,并提供了强大的后台管理系统。
  更甜
  Sweetter是一个基于Python的具有一定投票机制的开源微博项目,点击这里下载其源代码。
  吉斯科
  Jisko 的界面与 Twitter 非常相似。它可以通过 AJAX 自动更新。它还基于 PHP 和 MySQL。这个系统可能是由西班牙人开发的。使用 SVN 在此处下载其源代码。
  P2 WordPress 主题
  Wordpress 主题的P2(PHP)是一个WordPress Twitter 主题,可以将您的WordPress 博客转换为类似Twitter 的微博系统。支持实时更新,发布的信息和评论无需刷新即可显示。
  这十个开源微薄中的一个永远适合你。凡夫,推特对你来说不再是个谜。
  上一篇:真正“彻底”将火狐(Maxthon)设置为默认浏览器 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(8款国外开源微博,搭建自己的微博轻松又简单)
  文章标签文章分类 MySQL 数据库
  ©版权归作者所有:原创 作品来自51CTO博主朗基江湖。如需转载请注明出处,否则将追究法律责任
  轻松打造自己的“推特”微博平台!开源程序是免费的
  当推特风靡全球,新浪微博主导的群博时代爆发时,几乎所有的SNS产品都采用微博作为标准配置。你也喜欢建立自己的微博吗?
  自己开发微博产品并不容易,但在分享精神遍及全球互联网领域的今天,其中的秘诀是什么?自己建立一个虚假的“推特”微博。从网上搜集了十个开源微博程序,手握这些开源代码,搭建自己的微博轻而易举。
  如果你也有好的微博开源程序,请给我留言。IT人的精神是:分享!
  先介绍两条中文开源微博:
  易话
  接口与饭否类似,API接口与饭否相似。基于PHP和MySQL,点击这里下载源代码。
  网页烹饪
  基于PHP和MySQL,支持与机外同步,点此下载源代码。
  以下是8条国外开源微博:
  斋库
  Jaiku(演示地址)是一个基于Python的微博平台。2007年被谷歌收购,之后并未成功运营。不得不在 2009 年宣布暂停维护。 后来,Google 将 Jaiku 完全开源并进行了切换。在 AppEngine 上运行。Jaiku 目前是完全开源的,可供用户免费下载。可以到Jaiku源代码项目地址,使用SVN工具下载其源代码。
  Laconica/ StatusNet
  Laconica/StatusNet(演示地址)是一个基于PHP和MySQL的开源微博系统。也是可以实现微博常用功能的推特克隆版。国外很多微博系统都是通过这个开源系统搭建的。Laconica 得到了大量应用系统的支持,包括 Twitterfeed、Hellotxt 和 Gravity,它们已经成熟稳定。单击此处下载其源代码。
  永克利
  Yonkly 是一个基于 Asp.Net 的开源微博。除了开源版本,它还拥有高级的独立托管版本。
  弗洛波
  Floopo是一个基于PHP和MySQL的免费微博系统。它的功能与推特非常相似,并提供了强大的后台管理系统。
  更甜
  Sweetter是一个基于Python的具有一定投票机制的开源微博项目,点击这里下载其源代码。
  吉斯科
  Jisko 的界面与 Twitter 非常相似。它可以通过 AJAX 自动更新。它还基于 PHP 和 MySQL。这个系统可能是由西班牙人开发的。使用 SVN 在此处下载其源代码。
  P2 WordPress 主题
  Wordpress 主题的P2(PHP)是一个WordPress Twitter 主题,可以将您的WordPress 博客转换为类似Twitter 的微博系统。支持实时更新,发布的信息和评论无需刷新即可显示。
  这十个开源微薄中的一个永远适合你。凡夫,推特对你来说不再是个谜。
  上一篇:真正“彻底”将火狐(Maxthon)设置为默认浏览器

使用新浪微博开放平台api同步微博内容至自己网站(使用API提交数据(发布一条微博信息)(组图))

网站优化优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2021-10-29 18:02 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(使用API提交数据(发布一条微博信息)(组图))
  我也是新手,第一次使用开放平台进行开发。一开始我觉得无处可去。经过长时间的摸索,终于成功调用了API。现在我把这个经验介绍给新手(高手不用看,当然,如果你能提出一些意见和建议,我非常感谢),我想和你交流。
  本例介绍如何使用API​​提交数据(发微博)和使用API​​获取数据(获取最新更新的20条公众微博消息),即官方中的“获取下行数据集(时间线)接口” “微博访问接口”下的“Statuses/public_timeline获取最新更新的公众微博新闻”和“Statuses/update发布微博信息”API。
  首先,你必须有一个新浪微博账号,并申请一个app key(详情请参考%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97)@ >,然后在VS中新建一个解决方案,在解决方案中添加一个类库和一个网站,并添加一个引用(网站引用类库)。
  
  由于发布微博是POST请求,获取数据是GET请求,并且通过HTTP基本认证(Basic Authentication)授权,我把这些函数写在一个类中(在类库中),代码如下(该类参考我没有仔细考虑是否达到了普遍性):
  
  发送请求和授权码
  然后在类库中创建两个实体类status和user,字段与官方API相同:
  
  状态实体类
  
  用户实体类
  好了,经过上面的步骤,准备工作就完成了,现在可以调用API了,我们来看看发布一条微博消息。虽然在这个文章()中有介绍,但为了本文的完整性,我还是把它贴出来。我的代码,在类库中添加了一个微博访问类MiniBlogVisit类:
  
  微博访问
  您可以通过调用 update 方法发布微博。但是需要注意的是,这里的Content必须使用HttpUtility.UrlEncode进行编码,否则会出现乱码。
  看20条已更新的公众微博消息,为最新更新,这是官方API中的第一个接口。这里返回的是 XML 数据或 JSON 数据。您可以根据自己的喜好自由选择。我选择返回 XML 数据。我的方法是将返回的XML数据写入XML文件,然后解析XML文件。代码如下:
  
  获取数据代码
  好的,现在它被调用了。调用比较简单,就是一个空的Default.aspx页面。后台代码如下:
  
  呼叫代码
  至此,所有的代码都写完了,我们来看一下完整的解决方案:
  
  运行后效果如下:
  
  第一次调用API,也是第一次写这么长的文章。欢迎大家多拍几张!!! 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(使用API提交数据(发布一条微博信息)(组图))
  我也是新手,第一次使用开放平台进行开发。一开始我觉得无处可去。经过长时间的摸索,终于成功调用了API。现在我把这个经验介绍给新手(高手不用看,当然,如果你能提出一些意见和建议,我非常感谢),我想和你交流。
  本例介绍如何使用API​​提交数据(发微博)和使用API​​获取数据(获取最新更新的20条公众微博消息),即官方中的“获取下行数据集(时间线)接口” “微博访问接口”下的“Statuses/public_timeline获取最新更新的公众微博新闻”和“Statuses/update发布微博信息”API。
  首先,你必须有一个新浪微博账号,并申请一个app key(详情请参考%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97)@ >,然后在VS中新建一个解决方案,在解决方案中添加一个类库和一个网站,并添加一个引用(网站引用类库)。
  
  由于发布微博是POST请求,获取数据是GET请求,并且通过HTTP基本认证(Basic Authentication)授权,我把这些函数写在一个类中(在类库中),代码如下(该类参考我没有仔细考虑是否达到了普遍性):
  
  发送请求和授权码
  然后在类库中创建两个实体类status和user,字段与官方API相同:
  
  状态实体类
  
  用户实体类
  好了,经过上面的步骤,准备工作就完成了,现在可以调用API了,我们来看看发布一条微博消息。虽然在这个文章()中有介绍,但为了本文的完整性,我还是把它贴出来。我的代码,在类库中添加了一个微博访问类MiniBlogVisit类:
  
  微博访问
  您可以通过调用 update 方法发布微博。但是需要注意的是,这里的Content必须使用HttpUtility.UrlEncode进行编码,否则会出现乱码。
  看20条已更新的公众微博消息,为最新更新,这是官方API中的第一个接口。这里返回的是 XML 数据或 JSON 数据。您可以根据自己的喜好自由选择。我选择返回 XML 数据。我的方法是将返回的XML数据写入XML文件,然后解析XML文件。代码如下:
  
  获取数据代码
  好的,现在它被调用了。调用比较简单,就是一个空的Default.aspx页面。后台代码如下:
  
  呼叫代码
  至此,所有的代码都写完了,我们来看一下完整的解决方案:
  
  运行后效果如下:
  
  第一次调用API,也是第一次写这么长的文章。欢迎大家多拍几张!!!

使用新浪微博开放平台api同步微博内容至自己网站(python用python调用微博API项目实践的相关内容吗?)

网站优化优采云 发表了文章 • 0 个评论 • 68 次浏览 • 2021-10-29 17:22 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(python用python调用微博API项目实践的相关内容吗?)
  想知道python调用新浪微博API项目的相关内容吗?在本文中,我将仔细讲解调用新浪微博API的相关知识和一些代码示例。欢迎阅读和指正。先重点介绍一下:python,新浪微博,API,一起来学习吧。
  因为最近接触到一个调用新浪微博开放接口的项目,想尝试用python调用微博API。
  SDK下载地址:代码不超过十几K,完全可以理解。
  如果你有微博账号,你可以创建一个新的应用程序,然后你就可以得到应用程序密钥和应用程序密钥。这是应用获得 OAuth2.0 授权所必需的。
  要了解OAuth2,可以查看链接新浪微博的说明。OAuth2授权参数除了app key和app secret外还需要网站回调地址redirect_uri,并且这个回调地址不允许在局域网内(神马localhost,127.0.0.1 好像不行),这着实让我着急了好久。我没有使用API​​调用网站,所以查了很多。看到有人写这个地址可以代替,我试了一下,成功了,这对Diosi来说是个好消息。
  这是一个简单的程序来感受一下:
  设置以下参数
  
import sys
import weibo
import webbrowser
APP_KEY = ''
MY_APP_SECRET = ''
REDIRECT_URL = 'https://api.weibo.com/oauth2/default.html'
  获取微博授权网址,如第二行,用默认浏览器打开后,会要求登录微博,用需要授权的账号登录,如下图
  
api = weibo.APIClient(app_key=APP_KEY,app_secret=MY_APP_SECRET,redirect_uri=REDIRECT_URL)
authorize_url = api.get_authorize_url()
print(authorize_url)
webbrowser.open_new(authorize_url)
  
  登录后会转成一个连接
  key是code值,是认证的关键。手动输入code值模拟认证
  
request = api.request_access_token(code, REDIRECT_URL)
access_token = request.access_token
expires_in = request.expires_in
api.set_access_token(access_token, expires_in)
api.statuses.update.post(status=u'Test OAuth 2.0 Send a Weibo!')
  access_token是获取到的token,expires_in是授权的过期时间(UNIX时间)
  使用 set_access_token 保存授权。然后就可以调用微博界面了。测试发了一条微博
  
  但是,这种手动输入代码的方式并不适合程序调用。是否可以不打开链接请求登录并获得授权?经多方搜索参考,程序改进如下,可自动获取并保存代码,方便程序服务调用。
  
accessWeibo
# -*- coding: utf-8 -*-
#/usr/bin/env python
#access to SinaWeibo By sinaweibopy
#实现微博自动登录,token自动生成,保存及更新
#适合于后端服务调用
from weibo import APIClient
import pymongo
import sys, os, urllib, urllib2
from http_helper import *
from retry import *
try:
import json
except ImportError:
import simplejson as json
# setting sys encoding to utf-8
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
# weibo api访问配置
APP_KEY = '' # app key
APP_SECRET = '' # app secret
REDIRECT_URL = 'https://api.weibo.com/oauth2/default.html' # callback url 授权回调页,与OAuth2.0 授权设置的一致
USERID = '' # 登陆的微博用户名,必须是OAuth2.0 设置的测试账号
USERPASSWD = '' # 用户密码
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=REDIRECT_URL)
def make_access_token():
#请求access token
params = urllib.urlencode({
'action':'submit',
'withOfficalFlag':'0',
'ticket':'',
'isLoginSina':'',
'response_type':'code',
'regCallback':'',
'redirect_uri':REDIRECT_URL,
'client_id':APP_KEY,
'state':'',
'from':'',
'userId':USERID,
'passwd':USERPASSWD,
})
login_url = 'https://api.weibo.com/oauth2/authorize'
url = client.get_authorize_url()
content = urllib2.urlopen(url)
if content:
headers = { 'Referer' : url }
request = urllib2.Request(login_url, params, headers)
opener = get_opener(False)
urllib2.install_opener(opener)
try:
f = opener.open(request)
return_redirect_uri = f.url
except urllib2.HTTPError, e:
return_redirect_uri = e.geturl()
# 取到返回的code
code = return_redirect_uri.split('=')[1]
#得到token
token = client.request_access_token(code,REDIRECT_URL)
save_access_token(token)
def save_access_token(token):
#将access token保存到MongoDB数据库
mongoCon=pymongo.Connection(host="127.0.0.1",port=27017)
db= mongoCon.weibo
t={
"access_token":token['access_token'],
"expires_in":str(token['expires_in']),
"date":time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
}
db.token.insert(t,safe=True)
#Decorator 目的是当调用make_access_token()后再执行一次apply_access_token()
@retry(1)
def apply_access_token():
#从MongoDB读取及设置access token
try:
mongoCon=pymongo.Connection(host="127.0.0.1",port=27017)
db= mongoCon.weibo
if db.token.count()>0:
tokenInfos=db.token.find().sort([("_id",pymongo.DESCENDING)]).limit(1)
else:
make_access_token()
return False
for tokenInfo in tokenInfos:
access_token=tokenInfo["access_token"]
expires_in=tokenInfo["expires_in"]
try:
client.set_access_token(access_token, expires_in)
except StandardError, e:
if hasattr(e, 'error'):
if e.error == 'expired_token':
# token过期重新生成
make_access_token()
return False
else:
pass
except:
make_access_token()
return False
return True
if __name__ == "__main__":
apply_access_token()
# 以下为访问微博api的应用逻辑
# 以发布文字微博接口为例
client.statuses.update.post(status='Test OAuth 2.0 Send a Weibo!')
  
retry.py
import math
import time
# Retry decorator with exponential backoff
def retry(tries, delay=1, backoff=2):
"""Retries a function or method until it returns True.
delay sets the initial delay, and backoff sets how much the delay should
lengthen after each failure. backoff must be greater than 1, or else it
isn't really a backoff. tries must be at least 0, and delay greater than
0."""
if backoff decorated function
return deco_retry # @retry(arg[, ...]) -> true decorator
  
http_helper.py
# -*- coding: utf-8 -*-
#/usr/bin/env python
import urllib2,cookielib
class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_301(cls, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_301(cls, req, fp, code, msg, headers)
result.status = code
print headers
return result
def http_error_302(cls, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_302(cls, req, fp, code, msg, headers)
result.status = code
print headers
return result
def get_cookie():
cookies = cookielib.CookieJar()
return urllib2.HTTPCookieProcessor(cookies)
def get_opener(proxy=False):
rv=urllib2.build_opener(get_cookie(), SmartRedirectHandler())
rv.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')]
return rv
  相关文章 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(python用python调用微博API项目实践的相关内容吗?)
  想知道python调用新浪微博API项目的相关内容吗?在本文中,我将仔细讲解调用新浪微博API的相关知识和一些代码示例。欢迎阅读和指正。先重点介绍一下:python,新浪微博,API,一起来学习吧。
  因为最近接触到一个调用新浪微博开放接口的项目,想尝试用python调用微博API。
  SDK下载地址:代码不超过十几K,完全可以理解。
  如果你有微博账号,你可以创建一个新的应用程序,然后你就可以得到应用程序密钥和应用程序密钥。这是应用获得 OAuth2.0 授权所必需的。
  要了解OAuth2,可以查看链接新浪微博的说明。OAuth2授权参数除了app key和app secret外还需要网站回调地址redirect_uri,并且这个回调地址不允许在局域网内(神马localhost,127.0.0.1 好像不行),这着实让我着急了好久。我没有使用API​​调用网站,所以查了很多。看到有人写这个地址可以代替,我试了一下,成功了,这对Diosi来说是个好消息。
  这是一个简单的程序来感受一下:
  设置以下参数
  
import sys
import weibo
import webbrowser
APP_KEY = ''
MY_APP_SECRET = ''
REDIRECT_URL = 'https://api.weibo.com/oauth2/default.html'
  获取微博授权网址,如第二行,用默认浏览器打开后,会要求登录微博,用需要授权的账号登录,如下图
  
api = weibo.APIClient(app_key=APP_KEY,app_secret=MY_APP_SECRET,redirect_uri=REDIRECT_URL)
authorize_url = api.get_authorize_url()
print(authorize_url)
webbrowser.open_new(authorize_url)
  
  登录后会转成一个连接
  key是code值,是认证的关键。手动输入code值模拟认证
  
request = api.request_access_token(code, REDIRECT_URL)
access_token = request.access_token
expires_in = request.expires_in
api.set_access_token(access_token, expires_in)
api.statuses.update.post(status=u'Test OAuth 2.0 Send a Weibo!')
  access_token是获取到的token,expires_in是授权的过期时间(UNIX时间)
  使用 set_access_token 保存授权。然后就可以调用微博界面了。测试发了一条微博
  
  但是,这种手动输入代码的方式并不适合程序调用。是否可以不打开链接请求登录并获得授权?经多方搜索参考,程序改进如下,可自动获取并保存代码,方便程序服务调用。
  
accessWeibo
# -*- coding: utf-8 -*-
#/usr/bin/env python
#access to SinaWeibo By sinaweibopy
#实现微博自动登录,token自动生成,保存及更新
#适合于后端服务调用
from weibo import APIClient
import pymongo
import sys, os, urllib, urllib2
from http_helper import *
from retry import *
try:
import json
except ImportError:
import simplejson as json
# setting sys encoding to utf-8
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
# weibo api访问配置
APP_KEY = '' # app key
APP_SECRET = '' # app secret
REDIRECT_URL = 'https://api.weibo.com/oauth2/default.html' # callback url 授权回调页,与OAuth2.0 授权设置的一致
USERID = '' # 登陆的微博用户名,必须是OAuth2.0 设置的测试账号
USERPASSWD = '' # 用户密码
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=REDIRECT_URL)
def make_access_token():
#请求access token
params = urllib.urlencode({
'action':'submit',
'withOfficalFlag':'0',
'ticket':'',
'isLoginSina':'',
'response_type':'code',
'regCallback':'',
'redirect_uri':REDIRECT_URL,
'client_id':APP_KEY,
'state':'',
'from':'',
'userId':USERID,
'passwd':USERPASSWD,
})
login_url = 'https://api.weibo.com/oauth2/authorize'
url = client.get_authorize_url()
content = urllib2.urlopen(url)
if content:
headers = { 'Referer' : url }
request = urllib2.Request(login_url, params, headers)
opener = get_opener(False)
urllib2.install_opener(opener)
try:
f = opener.open(request)
return_redirect_uri = f.url
except urllib2.HTTPError, e:
return_redirect_uri = e.geturl()
# 取到返回的code
code = return_redirect_uri.split('=')[1]
#得到token
token = client.request_access_token(code,REDIRECT_URL)
save_access_token(token)
def save_access_token(token):
#将access token保存到MongoDB数据库
mongoCon=pymongo.Connection(host="127.0.0.1",port=27017)
db= mongoCon.weibo
t={
"access_token":token['access_token'],
"expires_in":str(token['expires_in']),
"date":time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
}
db.token.insert(t,safe=True)
#Decorator 目的是当调用make_access_token()后再执行一次apply_access_token()
@retry(1)
def apply_access_token():
#从MongoDB读取及设置access token
try:
mongoCon=pymongo.Connection(host="127.0.0.1",port=27017)
db= mongoCon.weibo
if db.token.count()>0:
tokenInfos=db.token.find().sort([("_id",pymongo.DESCENDING)]).limit(1)
else:
make_access_token()
return False
for tokenInfo in tokenInfos:
access_token=tokenInfo["access_token"]
expires_in=tokenInfo["expires_in"]
try:
client.set_access_token(access_token, expires_in)
except StandardError, e:
if hasattr(e, 'error'):
if e.error == 'expired_token':
# token过期重新生成
make_access_token()
return False
else:
pass
except:
make_access_token()
return False
return True
if __name__ == "__main__":
apply_access_token()
# 以下为访问微博api的应用逻辑
# 以发布文字微博接口为例
client.statuses.update.post(status='Test OAuth 2.0 Send a Weibo!')
  
retry.py
import math
import time
# Retry decorator with exponential backoff
def retry(tries, delay=1, backoff=2):
"""Retries a function or method until it returns True.
delay sets the initial delay, and backoff sets how much the delay should
lengthen after each failure. backoff must be greater than 1, or else it
isn't really a backoff. tries must be at least 0, and delay greater than
0."""
if backoff decorated function
return deco_retry # @retry(arg[, ...]) -> true decorator
  
http_helper.py
# -*- coding: utf-8 -*-
#/usr/bin/env python
import urllib2,cookielib
class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_301(cls, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_301(cls, req, fp, code, msg, headers)
result.status = code
print headers
return result
def http_error_302(cls, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_302(cls, req, fp, code, msg, headers)
result.status = code
print headers
return result
def get_cookie():
cookies = cookielib.CookieJar()
return urllib2.HTTPCookieProcessor(cookies)
def get_opener(proxy=False):
rv=urllib2.build_opener(get_cookie(), SmartRedirectHandler())
rv.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')]
return rv
  相关文章

使用新浪微博开放平台api同步微博内容至自己网站(1.微博三方登录流程和获取认证.2获取流程)

网站优化优采云 发表了文章 • 0 个评论 • 123 次浏览 • 2021-10-29 17:21 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(1.微博三方登录流程和获取认证.2获取流程)
  内容
  1. 微博三方登录流程
  
  https://api.weibo.com/oauth2/authorize?
client_id=4122644977
&response_type=code
&state=study&
forcelogin=true&
redirect_uri=https%3A%2F%2Fstudy.163.com%2Fsns%2Fweibo%2FoAuthCallback.htm%3Foaut
hType%3Dlogin%26returnUrl%3DaHR0cHM6Ly9zdHVkeS4xNjMuY29tL3Byb3ZpZGVyLzQwMDAwMDAwM
DQ3ODAxMi9pbmRleC5odG0%2FZnJvbT1zdHVkeQ%3D%3D%26nrsstcw%3Dfalse%26nc%3Dtrue###
https://study.163.com/provider ... study
  1.1 从前端获取认证码1.2 获取微博access_token1.3 获取微博用户基本信息并存入数据库1.4 生成token to Vue2.第三方登录与本地登录的关联(三种情况)2.1 情况一:没有本地登录,先登录第三方
  这时候就相当于注册了,只是拉取第三方信息注册为本地用户,建立本地用户和第三方用户
  (Openid) 绑定关系
  2.2 情况二:本地未登录,重新登录第三方
  此时用户已经注册了,获取openid后可以直接找到对应的本地用户
  2.3 案例三:本地登录并绑定第三方
  这只需要将获取到的openid绑定到本地用户。
  3.Oauth 认证原理4.为什么要使用三方登录 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(1.微博三方登录流程和获取认证.2获取流程)
  内容
  1. 微博三方登录流程
  
  https://api.weibo.com/oauth2/authorize?
client_id=4122644977
&response_type=code
&state=study&
forcelogin=true&
redirect_uri=https%3A%2F%2Fstudy.163.com%2Fsns%2Fweibo%2FoAuthCallback.htm%3Foaut
hType%3Dlogin%26returnUrl%3DaHR0cHM6Ly9zdHVkeS4xNjMuY29tL3Byb3ZpZGVyLzQwMDAwMDAwM
DQ3ODAxMi9pbmRleC5odG0%2FZnJvbT1zdHVkeQ%3D%3D%26nrsstcw%3Dfalse%26nc%3Dtrue###
https://study.163.com/provider ... study
  1.1 从前端获取认证码1.2 获取微博access_token1.3 获取微博用户基本信息并存入数据库1.4 生成token to Vue2.第三方登录与本地登录的关联(三种情况)2.1 情况一:没有本地登录,先登录第三方
  这时候就相当于注册了,只是拉取第三方信息注册为本地用户,建立本地用户和第三方用户
  (Openid) 绑定关系
  2.2 情况二:本地未登录,重新登录第三方
  此时用户已经注册了,获取openid后可以直接找到对应的本地用户
  2.3 案例三:本地登录并绑定第三方
  这只需要将获取到的openid绑定到本地用户。
  3.Oauth 认证原理4.为什么要使用三方登录

使用新浪微博开放平台api同步微博内容至自己网站(微博直播新浪微博开放平台SDKforNet40+支持OAuth20)

网站优化优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2021-10-28 10:11 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(微博直播新浪微博开放平台SDKforNet40+支持OAuth20)
  查看代码 新浪微博开放平台使用的PHP SDK收录DEMO SAESina App Engine,可以直接使用。SDK已内置,无需下载,使用前需要。微博开放平台基于微博的海量用户和强大的问答百科传播能力,接入第三方合作伙伴服务,为用户提供建议。微博直播组件可以让用户在你的网站上实时讨论热点话题。用户在此发布的微博将发布到微博模块设置显示标题栏显示边框显示发布框设置主题多个主题。
  微博话题墙可以部署在任何支持HTML的网页上,展示话题相关的微博公众号和转发热榜,支持微博置顶。有基础版和PK版两个版本。基础版支持多主题的配置。支持的话。您的访问者可以点击它,将您的内容分享到新浪微博,带来更高回访的关注按钮,该按钮可以部署在任何支持 ifarme 的网页上。在这些网页上点击关注按钮的用户可以成为您的微博粉丝微博话题。我也是新手,第一次使用开放平台进行开发。一开始我觉得无处可去。经过长时间的摸索,终于成功调用了API。现在我不需要给新手高手看这个经验了。
  
  
  欢迎测试新浪微博开放平台SDK for Net 40+支持OAuth20。新浪微博正式支持新版APISDK,并加入官方SDK下载列表。下载中提供了使用 Web 和 Winform 的示例。新浪科技讯 10月16日消息,由SSO授权的SSO微博开放平台近日正式上线。用户只需登录一次即可以普通微博用户身份访问其他可信应用系统。关注新浪微博关注简体版设置简单,只需到新浪微博开放平台申请网站访问权注意简体版不提供技术支持,商业版不提供兼容简化版,
  微博直播
  新浪微博开放平台配备专业团队,为开发者提供360度全方位支持,服务涵盖商业产品运营技术四个层面。希望可以拓展更多优质的现场应用。官方数据显示,新浪微博开放平台已经吸引了数十万第三方开发者,平台上上传了3500个应用程序,其中处于开发或审核阶段的应用程序有7万至8万个。在首届互联网公开大会上,总经理彭少斌表示,新浪微博将推出开放游戏平台,一年内不参与利润分享。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(微博直播新浪微博开放平台SDKforNet40+支持OAuth20)
  查看代码 新浪微博开放平台使用的PHP SDK收录DEMO SAESina App Engine,可以直接使用。SDK已内置,无需下载,使用前需要。微博开放平台基于微博的海量用户和强大的问答百科传播能力,接入第三方合作伙伴服务,为用户提供建议。微博直播组件可以让用户在你的网站上实时讨论热点话题。用户在此发布的微博将发布到微博模块设置显示标题栏显示边框显示发布框设置主题多个主题。
  微博话题墙可以部署在任何支持HTML的网页上,展示话题相关的微博公众号和转发热榜,支持微博置顶。有基础版和PK版两个版本。基础版支持多主题的配置。支持的话。您的访问者可以点击它,将您的内容分享到新浪微博,带来更高回访的关注按钮,该按钮可以部署在任何支持 ifarme 的网页上。在这些网页上点击关注按钮的用户可以成为您的微博粉丝微博话题。我也是新手,第一次使用开放平台进行开发。一开始我觉得无处可去。经过长时间的摸索,终于成功调用了API。现在我不需要给新手高手看这个经验了。
  
  
  欢迎测试新浪微博开放平台SDK for Net 40+支持OAuth20。新浪微博正式支持新版APISDK,并加入官方SDK下载列表。下载中提供了使用 Web 和 Winform 的示例。新浪科技讯 10月16日消息,由SSO授权的SSO微博开放平台近日正式上线。用户只需登录一次即可以普通微博用户身份访问其他可信应用系统。关注新浪微博关注简体版设置简单,只需到新浪微博开放平台申请网站访问权注意简体版不提供技术支持,商业版不提供兼容简化版,
  微博直播
  新浪微博开放平台配备专业团队,为开发者提供360度全方位支持,服务涵盖商业产品运营技术四个层面。希望可以拓展更多优质的现场应用。官方数据显示,新浪微博开放平台已经吸引了数十万第三方开发者,平台上上传了3500个应用程序,其中处于开发或审核阶段的应用程序有7万至8万个。在首届互联网公开大会上,总经理彭少斌表示,新浪微博将推出开放游戏平台,一年内不参与利润分享。

使用新浪微博开放平台api同步微博内容至自己网站(如何对网页分享的样式进行自定义呢?(一))

网站优化优采云 发表了文章 • 0 个评论 • 120 次浏览 • 2021-10-27 22:21 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(如何对网页分享的样式进行自定义呢?(一))
  写作背景:
  分享内容是用户的常用操作,也是产品中常用的功能之一。在网站的一个设计中,正好涉及到分享功能,于是搜集了网上各种前辈资料,整理了APP和网页的分享功能(所有信息来源基本都是通过链接标注出来的)。本文仅对共享的一般实现原理进行说明,不涉及具体的功能流程和实现代码。如有不当之处,希望大家多多指教。
  一、在网络上分享
  1台PC网络共享
  1.1 分享到微信
  PC网页一般会生成网页二维码,用户可以使用手机微信扫描二维码,在微信浏览器中打开;打开后,在微信内置浏览器中使用微信自带的分享功能进行分享。
  
  分享PC网页到微信
  -----如何自定义分享风格?
  使用微信内置浏览器进行二次分享时,会遇到一个问题,就是无法显示网页的缩略图,只能显示默认的占位图。那么如何自定义共享样式呢?以下为官方微信解决方案:
  接入微信的JS-SDK(开发者通过JavaScript代码在网页上使用微信原生功能的工具包)。使用微信内置浏览器分享时,可以自定义网页分享风格(标题和图片风格)。这样可以保证用户在微信生态中进行二次分享时有更好的分享效果。
  你可以参考这个文章
  【解决方案】微信网页链接分享定制-黑子的开发笔记-CSDN博客
  
  上图为使用safari分享网页到微信的样式,下图为使用微信浏览器二次分享网页的样式
  1.2 分享到微博、QQ
  与微信不同,微博和QQ从网页发展而来,对网页分享有很好的支持。通过代码将分享按钮嵌入到网站中,用户可以点击按钮调出微博/QQ登录或分享页面(网页代替客户端)
  具体方法请参考平台官方文档/sharebutton
  
  官方微博说明
  2 移动网络共享
  移动端可以使用浏览器自带的分享功能;当然,为了保持与PC的统一,页面中也可以加入分享功能。
  2.1 分享到微信
  移动端一般会生成一个网页链接,让用户复制链接,然后手动分享(粘贴链接)到微信。效果比较差
  
  百度百科的微信分享风格
  2.2 分享到微博、QQ
  和PC端没有区别:分享按钮通过代码嵌入到网站中,用户可以点击按钮调出微博/QQ登录或分享页面(网页代替客户端)
  
  分享到微博
  二、在APP中分享
  1 使用系统级分享插件
  iOS 提供系统级分享扩展分享插件,帮助系统与应用、应用、应用分享内容。App开发者只需在开发代码中添加原生分享插件,在系统注册后,即可通过Extension与系统和其他App(也注册使用的扩展)分享内容(输出、接受)。
  使用原生分享插件的好处是分享操作不需要进入收录APP(接受内容的APP),也不需要在应用之间来回跳转;容纳更多应用,更开放;用户可以根据自己的习惯自定义分享面板 收录APP。
  详情请参考这个文章iOS Share Extension分享机制
  
  要在 safari 中将网页分享到微信,您可以使用本机分享插件。无需唤醒微信客户端即可实现分享,不影响用户操作的主流。
  2 使用自定义分享插件
  国内应用更符合自己的业务目标和业务需求,使用自定义分享插件。这时候就需要遵循所收录的APP(接受内容的APP)的规范。以分享到微信为例。一般来说,通过集成微信SDK,调用微信接口,调用微信分享表(分享面板)进行分享,然后返回给自己的应用。
  
  左图为荔枝APP自定义分享面板。分享H5到微信时,需要唤醒微信客户端,分享后返回荔枝APP。
  -------官方微信分享说明------
  微信分享采集是指第三方应用允许用户通过访问该功能,将应用中的文字、图片、音乐、视频、网页、小程序分享到微信好友会话、朋友圈或添加到微信采集。
  微信分享和采集功能已向所有开发者开放。开发者在微信开放平台账号下申请App并审核通过后,即可获得微信分享和采集权限。
  微信分享采集目前支持文字、图片、音乐、视频、网页、小程序六种类型(海外应用支持网页和小程序类型分享)。开发者在App中集成微信SDK后,即可调用接口实现。
  -------------------------------------
  详情请参考微信官方文档
  /cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317332&token=&lang=zh_CN
  但是目前微信已经取消了分享结果的返回,所以我们无法再知道用户是真的完成了分享还是中途离开了。. .
  
  微信官方说明
  结论:
  分享功能虽然经常使用,但很容易被用户和产品经理忽略。以上简单梳理了APP和网页的分享实现,很多细节有待进一步研究和补充~ 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(如何对网页分享的样式进行自定义呢?(一))
  写作背景:
  分享内容是用户的常用操作,也是产品中常用的功能之一。在网站的一个设计中,正好涉及到分享功能,于是搜集了网上各种前辈资料,整理了APP和网页的分享功能(所有信息来源基本都是通过链接标注出来的)。本文仅对共享的一般实现原理进行说明,不涉及具体的功能流程和实现代码。如有不当之处,希望大家多多指教。
  一、在网络上分享
  1台PC网络共享
  1.1 分享到微信
  PC网页一般会生成网页二维码,用户可以使用手机微信扫描二维码,在微信浏览器中打开;打开后,在微信内置浏览器中使用微信自带的分享功能进行分享。
  
  分享PC网页到微信
  -----如何自定义分享风格?
  使用微信内置浏览器进行二次分享时,会遇到一个问题,就是无法显示网页的缩略图,只能显示默认的占位图。那么如何自定义共享样式呢?以下为官方微信解决方案:
  接入微信的JS-SDK(开发者通过JavaScript代码在网页上使用微信原生功能的工具包)。使用微信内置浏览器分享时,可以自定义网页分享风格(标题和图片风格)。这样可以保证用户在微信生态中进行二次分享时有更好的分享效果。
  你可以参考这个文章
  【解决方案】微信网页链接分享定制-黑子的开发笔记-CSDN博客
  
  上图为使用safari分享网页到微信的样式,下图为使用微信浏览器二次分享网页的样式
  1.2 分享到微博、QQ
  与微信不同,微博和QQ从网页发展而来,对网页分享有很好的支持。通过代码将分享按钮嵌入到网站中,用户可以点击按钮调出微博/QQ登录或分享页面(网页代替客户端)
  具体方法请参考平台官方文档/sharebutton
  
  官方微博说明
  2 移动网络共享
  移动端可以使用浏览器自带的分享功能;当然,为了保持与PC的统一,页面中也可以加入分享功能。
  2.1 分享到微信
  移动端一般会生成一个网页链接,让用户复制链接,然后手动分享(粘贴链接)到微信。效果比较差
  
  百度百科的微信分享风格
  2.2 分享到微博、QQ
  和PC端没有区别:分享按钮通过代码嵌入到网站中,用户可以点击按钮调出微博/QQ登录或分享页面(网页代替客户端)
  
  分享到微博
  二、在APP中分享
  1 使用系统级分享插件
  iOS 提供系统级分享扩展分享插件,帮助系统与应用、应用、应用分享内容。App开发者只需在开发代码中添加原生分享插件,在系统注册后,即可通过Extension与系统和其他App(也注册使用的扩展)分享内容(输出、接受)。
  使用原生分享插件的好处是分享操作不需要进入收录APP(接受内容的APP),也不需要在应用之间来回跳转;容纳更多应用,更开放;用户可以根据自己的习惯自定义分享面板 收录APP。
  详情请参考这个文章iOS Share Extension分享机制
  
  要在 safari 中将网页分享到微信,您可以使用本机分享插件。无需唤醒微信客户端即可实现分享,不影响用户操作的主流。
  2 使用自定义分享插件
  国内应用更符合自己的业务目标和业务需求,使用自定义分享插件。这时候就需要遵循所收录的APP(接受内容的APP)的规范。以分享到微信为例。一般来说,通过集成微信SDK,调用微信接口,调用微信分享表(分享面板)进行分享,然后返回给自己的应用。
  
  左图为荔枝APP自定义分享面板。分享H5到微信时,需要唤醒微信客户端,分享后返回荔枝APP。
  -------官方微信分享说明------
  微信分享采集是指第三方应用允许用户通过访问该功能,将应用中的文字、图片、音乐、视频、网页、小程序分享到微信好友会话、朋友圈或添加到微信采集。
  微信分享和采集功能已向所有开发者开放。开发者在微信开放平台账号下申请App并审核通过后,即可获得微信分享和采集权限。
  微信分享采集目前支持文字、图片、音乐、视频、网页、小程序六种类型(海外应用支持网页和小程序类型分享)。开发者在App中集成微信SDK后,即可调用接口实现。
  -------------------------------------
  详情请参考微信官方文档
  /cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317332&token=&lang=zh_CN
  但是目前微信已经取消了分享结果的返回,所以我们无法再知道用户是真的完成了分享还是中途离开了。. .
  
  微信官方说明
  结论:
  分享功能虽然经常使用,但很容易被用户和产品经理忽略。以上简单梳理了APP和网页的分享实现,很多细节有待进一步研究和补充~

使用新浪微博开放平台api同步微博内容至自己网站(静态博客框架Hexo入门,本文评论系统怎么做?)

网站优化优采云 发表了文章 • 0 个评论 • 81 次浏览 • 2021-10-27 22:20 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(静态博客框架Hexo入门,本文评论系统怎么做?)
  本文仅介绍如何基于github问题实现第三方评论系统。对于 Hexo 的介绍,本文不打算赘述。如果有之前不了解Hexo的童鞋,可以看看之前的文章《Hexo介绍,一个静态博客框架》,或者直接访问Hexo官网
  一、原因
  个人博客基于静态博客系统(Hexo),没有任何后端功能,如搜索和评论系统。不过,如果想给静态博客添加评论功能,也不是没有可能。这时候就必须使用第三方评论系统。
  什么是第三方评论系统?博客或 cms 系统通常由两部分组成:内容和评论。评论可以增加博主与用户之间的互动,也是博主传达思想和观点的一对多交流平台。所以除了社区平台,评论也成为了一般博客和cms系统的必备功能。大型网站自己开发评论系统和分享系统,一般中小网站自己开发评论系统,成本高。而且垃圾评论和非法关键词过滤比较困难,所以国内外都有第三方评论系统。以下是一些曾经流行或现在流行的第三方评论系统。
  那么回到主题,市面上的第三方评论系统太多了,哪怕只有一两个宕机了,选择还是很多的。为什么要自己做一个?这不是造轮子吗?其实刚开始的时候,我话很多,心里也很高兴。突然有一天我说我挂了。没有办法。然后我选择了另一个,然后我将其更改为网易云。过了一会儿,网易云也死了。
  后来在网上搜了搜,发现居然有人用GitHub Issue做了一个评论系统。这无疑是一个非常好的想法,非常有创意。当然我也用过,但总觉得有点难看,和自己博客的主题不符。只用了两天,我就把它撤了。我打算自己做一个。就去做吧,程序员总喜欢造轮子。
  二、什么是 GitHub 问题
  如果你经常访问GitHub的童鞋,你应该知道这个功能。有人了解GitHub的问题功能,就像TODO列表一样。你可以把下一步想要完成的所有工作,比如功能添加、bug修复等,都写到一个issue里面,放在上面。它可以用作提醒或统一管理。此外,每个提交都可以有选择地与一个问题相关联。例如,通过在消息中添加 #n,它可以与第 n 个问题相关联。详情请参考知乎。其他人对“github问题”做了什么?”答案。而这个博客的评论数据存储issues仓库地址是,仓库里没有托管代码。总之,如果我想用github Issues做一个评论系统,我实际上是把数据存储在github issues .
  三、评论系统实现
  准备工作
  
  应用名称:您的站点名称;
  主页网址:您的网站主页链接;
  应用描述:站点描述;
  授权回调地址:GitHub授权成功后的返回地址
  创建成功后,会生成一个Client ID和一个Client Secret。
  GitHub 提供了很多方便第三方开发的API。当然,添加、删除、修改、检查github问题的API也在其中。有了这些API,你就可以执行各种技巧,比如我们现在要写的评论系统。此外,也有人怀疑我们是否应该“滥用”这些 API。不过我个人觉得GitHub既然提供了这些API,也就意味着把这些权限开放给大家,大家不要害怕“滥用”。那么,需要哪些API来满足我们目前的需求,下面就让我一一列举,以我的账号为例,jangdelong是Github名称,blog_comments是仓库名称。
  GET:获取所有问题信息
  GET:获取问题下的信息(11 是问题编号)
  GET: comments 获取问题下的评论
  GET:获取评论ID 111下的所有反应(反应包括[+1]、不喜欢[-1]、喜欢[心]等字段)
  POST:创建一个问题
  POST:在问题编号 11 下创建评论
  POST:在 ID 为 111 的评论下创建一个反应(例如心脏)
  POST:markdown语法解析接口
  整体设计
  流程图:
   |--> 显示已登录
|--> 已登录 --> |--> 加载评论列表 --> 分页加载
| |--> 其他
| |--> 评论操作 --> 成功/失败 |
开始 --> GitHub 授权登录 ? --> | |--> 结束
| |--> 显示未登录 |
|--> 未登录 --> |--> 加载评论列表 --> 分页加载
|--> 其他
|--> 评论操作 --> 提示未登录状态
  效果图:
  
  因此,我们可以将评论系统分为列表(list)、评论框(box)、顶部登录状态栏(signbar)等部分。View部分的代码组织为:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Renders = {
// 列表模块
list: {
tpl: ...,
...
},
// 评论框模块
box: {
tpl: ...,
...
},
// 顶部登录状态栏
signBar: {
tpl: ...,
...
},
... // 其他模块视图
};
...
})(JELON);
  将视图部分的代码整理好后,我们根据GitHub提供的各种API将其封装在Requests中,整理如下:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Requests = {
// 根据 label 获取 issue 编号
getIssueNumberByLabel: function () { ... },
// 创建 issue
createIssue: function () { ... },
// 根据 issue 编号获取评论列表
getCommentListByIssueNumber: function () { ... },
// 根据评论 ID 获取 reactions (即点赞数据)
getReactionsByCommentId: function () { ... },
// markdown 解析
markdown: function () { ... },
// 通过 code 获取 access_token
getAccessToken: function () { ... },
// 利用 access_token 去获取 GitHub 用户信息
getUserInfo: function () { ... },
// 创建评论
createComment: function () { ... },
// 创建 reactions (点赞)
createReaction: function () { ... }
};
...
})(JELON);
  下一步是封装事件操作。我们将其封装到 Actions 中。代码组织如下:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Actions = {
// 初始加载,如列表、登录状态等
init: function () { ... },
// 登出操作
signOut: function () { ... },
// 列表翻页跳转
pageJump: function () { ... },
// 编辑预览
editPreviewSwitch: function () { ... },
// 提交评论操作
postComment: function () { ... },
// 点赞操作
like: function () { ... }
};
...
})(JELON);
  程序入口:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Comment = function (options) {
JL.options = options || {};
$('comments').innerHTML = [
this.Renders.signBar.tpl,
this.Renders.box.tpl,
this.Renders.tips,
this.Renders.list.tpl
].join('');
JL.Actions.init();
};
...
})(JELON);
  登录流程
  GitHub授权登录是必不可少的功能,登录后才能发表评论。 前面说过,GitHub授权登录遵循OAuth2.0标准。下面是OAuth2.0的操作流程,让我们更好的理解。
  
  那么,GitHub 授权登录是如何按照这个标准进行的呢?我们来简单介绍一下。如果想更详细的了解,也可以访问GitHub官方文档。
  用户发起重定向请求授权服务器换取code
  `GET http://github.com/login/oauth/authorize`
  拿到code后,用client_id、client_secret和code兑换token_access。(上面的准备工作中提到了client_id和client_secret)
  `POST https://github.com/login/oauth/access_token`
  获取token_access后,我们可以使用token_access获取登录用户的信息
  `GET https://api.github.com/user`
  经过以上3步,GitHub授权登录就完成了。
  四、如何使用评论系统
  介绍评论系统相关的css和js。引入相关样式和脚本后,在页面中添加以下代码:
  
JELON.Comment({
container: 'comments', // 评论框容器id或对象,留空是默认为 comments
label: '' || '', // 文章标签
owner: '', // GitHub application 创建者
repo: '', // issue 所在仓库名
clientId: '', // GitHub application client_id
clientSecret: '' // GitHub application client_secret
});
  由于这个评论系统要集成到个人主题中,所以应该配合hexo-theme-xups使用。hexo-theme-xups 的主题链接是最新的主题(带GitHub登录评论功能),后续会更新上来,当然以后会持续更新优化,欢迎多多star。五、遇到的问题
  主要遇到三个问题,一个是标签权限的创建,一个是跨域问题,一个是GitHub授权登录兼容性问题。
  创建标签权限问题(目前未解决)。标签是文章和issue之间的链接,因为我们需要使用标签来查询issue号,以便后续的流程可以继续。现在遇到的问题是,对于新的文章,只有自己账号(GitHub Application)的创建者才能创建带有标签的issue。参考GitHub界面(POST /repos/:owner/:repo/issues)文档,上面说了
  > Labels to associate with this issue. NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise.
  跨域问题(暂时解决)。主要目的是交换 token_access POST 的代码。这个接口是跨域的。临时解决办法是
  使用:///login/oauth/access_token 进行转发。看:。GitHub授权登录兼容性问题(暂未解决)。经过简单的测试,发现PC端的兼容性问题主要是一些旧版本的浏览器,包括一些旧版本的谷歌浏览器(版本号55.x.xxxx.xx);而移动端主要是UC浏览器,无法实现GitHub授权登录。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(静态博客框架Hexo入门,本文评论系统怎么做?)
  本文仅介绍如何基于github问题实现第三方评论系统。对于 Hexo 的介绍,本文不打算赘述。如果有之前不了解Hexo的童鞋,可以看看之前的文章《Hexo介绍,一个静态博客框架》,或者直接访问Hexo官网
  一、原因
  个人博客基于静态博客系统(Hexo),没有任何后端功能,如搜索和评论系统。不过,如果想给静态博客添加评论功能,也不是没有可能。这时候就必须使用第三方评论系统。
  什么是第三方评论系统?博客或 cms 系统通常由两部分组成:内容和评论。评论可以增加博主与用户之间的互动,也是博主传达思想和观点的一对多交流平台。所以除了社区平台,评论也成为了一般博客和cms系统的必备功能。大型网站自己开发评论系统和分享系统,一般中小网站自己开发评论系统,成本高。而且垃圾评论和非法关键词过滤比较困难,所以国内外都有第三方评论系统。以下是一些曾经流行或现在流行的第三方评论系统。
  那么回到主题,市面上的第三方评论系统太多了,哪怕只有一两个宕机了,选择还是很多的。为什么要自己做一个?这不是造轮子吗?其实刚开始的时候,我话很多,心里也很高兴。突然有一天我说我挂了。没有办法。然后我选择了另一个,然后我将其更改为网易云。过了一会儿,网易云也死了。
  后来在网上搜了搜,发现居然有人用GitHub Issue做了一个评论系统。这无疑是一个非常好的想法,非常有创意。当然我也用过,但总觉得有点难看,和自己博客的主题不符。只用了两天,我就把它撤了。我打算自己做一个。就去做吧,程序员总喜欢造轮子。
  二、什么是 GitHub 问题
  如果你经常访问GitHub的童鞋,你应该知道这个功能。有人了解GitHub的问题功能,就像TODO列表一样。你可以把下一步想要完成的所有工作,比如功能添加、bug修复等,都写到一个issue里面,放在上面。它可以用作提醒或统一管理。此外,每个提交都可以有选择地与一个问题相关联。例如,通过在消息中添加 #n,它可以与第 n 个问题相关联。详情请参考知乎。其他人对“github问题”做了什么?”答案。而这个博客的评论数据存储issues仓库地址是,仓库里没有托管代码。总之,如果我想用github Issues做一个评论系统,我实际上是把数据存储在github issues .
  三、评论系统实现
  准备工作
  
  应用名称:您的站点名称;
  主页网址:您的网站主页链接;
  应用描述:站点描述;
  授权回调地址:GitHub授权成功后的返回地址
  创建成功后,会生成一个Client ID和一个Client Secret。
  GitHub 提供了很多方便第三方开发的API。当然,添加、删除、修改、检查github问题的API也在其中。有了这些API,你就可以执行各种技巧,比如我们现在要写的评论系统。此外,也有人怀疑我们是否应该“滥用”这些 API。不过我个人觉得GitHub既然提供了这些API,也就意味着把这些权限开放给大家,大家不要害怕“滥用”。那么,需要哪些API来满足我们目前的需求,下面就让我一一列举,以我的账号为例,jangdelong是Github名称,blog_comments是仓库名称。
  GET:获取所有问题信息
  GET:获取问题下的信息(11 是问题编号)
  GET: comments 获取问题下的评论
  GET:获取评论ID 111下的所有反应(反应包括[+1]、不喜欢[-1]、喜欢[心]等字段)
  POST:创建一个问题
  POST:在问题编号 11 下创建评论
  POST:在 ID 为 111 的评论下创建一个反应(例如心脏)
  POST:markdown语法解析接口
  整体设计
  流程图:
   |--> 显示已登录
|--> 已登录 --> |--> 加载评论列表 --> 分页加载
| |--> 其他
| |--> 评论操作 --> 成功/失败 |
开始 --> GitHub 授权登录 ? --> | |--> 结束
| |--> 显示未登录 |
|--> 未登录 --> |--> 加载评论列表 --> 分页加载
|--> 其他
|--> 评论操作 --> 提示未登录状态
  效果图:
  
  因此,我们可以将评论系统分为列表(list)、评论框(box)、顶部登录状态栏(signbar)等部分。View部分的代码组织为:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Renders = {
// 列表模块
list: {
tpl: ...,
...
},
// 评论框模块
box: {
tpl: ...,
...
},
// 顶部登录状态栏
signBar: {
tpl: ...,
...
},
... // 其他模块视图
};
...
})(JELON);
  将视图部分的代码整理好后,我们根据GitHub提供的各种API将其封装在Requests中,整理如下:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Requests = {
// 根据 label 获取 issue 编号
getIssueNumberByLabel: function () { ... },
// 创建 issue
createIssue: function () { ... },
// 根据 issue 编号获取评论列表
getCommentListByIssueNumber: function () { ... },
// 根据评论 ID 获取 reactions (即点赞数据)
getReactionsByCommentId: function () { ... },
// markdown 解析
markdown: function () { ... },
// 通过 code 获取 access_token
getAccessToken: function () { ... },
// 利用 access_token 去获取 GitHub 用户信息
getUserInfo: function () { ... },
// 创建评论
createComment: function () { ... },
// 创建 reactions (点赞)
createReaction: function () { ... }
};
...
})(JELON);
  下一步是封装事件操作。我们将其封装到 Actions 中。代码组织如下:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Actions = {
// 初始加载,如列表、登录状态等
init: function () { ... },
// 登出操作
signOut: function () { ... },
// 列表翻页跳转
pageJump: function () { ... },
// 编辑预览
editPreviewSwitch: function () { ... },
// 提交评论操作
postComment: function () { ... },
// 点赞操作
like: function () { ... }
};
...
})(JELON);
  程序入口:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Comment = function (options) {
JL.options = options || {};
$('comments').innerHTML = [
this.Renders.signBar.tpl,
this.Renders.box.tpl,
this.Renders.tips,
this.Renders.list.tpl
].join('');
JL.Actions.init();
};
...
})(JELON);
  登录流程
  GitHub授权登录是必不可少的功能,登录后才能发表评论。 前面说过,GitHub授权登录遵循OAuth2.0标准。下面是OAuth2.0的操作流程,让我们更好的理解。
  
  那么,GitHub 授权登录是如何按照这个标准进行的呢?我们来简单介绍一下。如果想更详细的了解,也可以访问GitHub官方文档。
  用户发起重定向请求授权服务器换取code
  `GET http://github.com/login/oauth/authorize`
  拿到code后,用client_id、client_secret和code兑换token_access。(上面的准备工作中提到了client_id和client_secret)
  `POST https://github.com/login/oauth/access_token`
  获取token_access后,我们可以使用token_access获取登录用户的信息
  `GET https://api.github.com/user`
  经过以上3步,GitHub授权登录就完成了。
  四、如何使用评论系统
  介绍评论系统相关的css和js。引入相关样式和脚本后,在页面中添加以下代码:
  
JELON.Comment({
container: 'comments', // 评论框容器id或对象,留空是默认为 comments
label: '' || '', // 文章标签
owner: '', // GitHub application 创建者
repo: '', // issue 所在仓库名
clientId: '', // GitHub application client_id
clientSecret: '' // GitHub application client_secret
});
  由于这个评论系统要集成到个人主题中,所以应该配合hexo-theme-xups使用。hexo-theme-xups 的主题链接是最新的主题(带GitHub登录评论功能),后续会更新上来,当然以后会持续更新优化,欢迎多多star。五、遇到的问题
  主要遇到三个问题,一个是标签权限的创建,一个是跨域问题,一个是GitHub授权登录兼容性问题。
  创建标签权限问题(目前未解决)。标签是文章和issue之间的链接,因为我们需要使用标签来查询issue号,以便后续的流程可以继续。现在遇到的问题是,对于新的文章,只有自己账号(GitHub Application)的创建者才能创建带有标签的issue。参考GitHub界面(POST /repos/:owner/:repo/issues)文档,上面说了
  > Labels to associate with this issue. NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise.
  跨域问题(暂时解决)。主要目的是交换 token_access POST 的代码。这个接口是跨域的。临时解决办法是
  使用:///login/oauth/access_token 进行转发。看:。GitHub授权登录兼容性问题(暂未解决)。经过简单的测试,发现PC端的兼容性问题主要是一些旧版本的浏览器,包括一些旧版本的谷歌浏览器(版本号55.x.xxxx.xx);而移动端主要是UC浏览器,无法实现GitHub授权登录。

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博api开发内容一个整理和说明,应用开发)

网站优化优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2021-10-27 15:03 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博api开发内容一个整理和说明,应用开发)
  现在玩微博的人越来越多,关于微博的第三方应用开​​发也越来越多。偶然接触到新浪微博API开发。新浪微博API开发资源比较大。新浪微博为开发者提供了一个平台。URL为: 收录新浪微博开发的综合信息,包括开发者的使用和介绍,各种语言的api功能介绍文档,sdk等资料。.
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。内容组织和解释,
  新浪微博API开发前的准备
  首先到新浪微博开放平台下载基于PHP的SDK开发包。下载地址为:
  下载完成后放到自己的开发环境中解压。演示程序也包括在内。我们可以参考它的示例程序进行编写。
  新浪微博API开发最重要的用户授权流程
  事实上,开发过程中的很多问题都集中在用户授权阶段。我开发的第三方应用使用的是oauth授权。oauth授权的流程在新浪微博开放平台上做了清晰完整的介绍。我们你可以看看。这里我从实例开发的角度进行介绍和讲解。
  1.首先获取未授权的请求令牌
  复制代码代码如下:
  $o = new weibooauth( wb_akey, wb_skey );
  $keys = $o->getrequesttoken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我们需要在新浪微博开放平台注册一个账号,或者直接用我们的新浪微博账号登录,进入我的应用,然后按照提示创建我们自己的第三方应用。创建完成后,我们可以得到两个授权app key和app secret值,这两个值是我们应用开发的关键。
  获取到授权值后,我们可以通过上面的代码获取未授权的请求令牌值,该值将存储在$key数组变量中。
  2. 然后请求用户授权token
  复制代码代码如下:
  $_session['keys'] = $keys;
  aurl = $o->getauthorizeurl( $keys['oauth_token'] ,false,'');
  获取到未授权请求token值后,我们就可以使用上面的代码准备去新浪微博授权页面进行授权了。$aurl 是授权链接页面。得到$aurl后,我们可以使用header()直接跳转到它。授权页面,然后用户输入新浪微博账号和密码进行授权。授权完成后会自动跳转回你最后一个参数设置的回调页面:这个链接可以设置为上一个页面,这样授权完成后会显示 再次自动跳转回来。
  需要说明的是,需要设置会话密钥的值,在下面获取的授权访问令牌中需要该值。很多朋友可能会参考开放平台上的说明进行授权,但是发现总是报错。这通常是问题所在。您尚未设置会话的键值。当然,下面的访问令牌的值是无法获取的。必须记住这一点。
  3.最终得到用户授权的access token
  复制代码代码如下:
  $o = 新的 weibooauth( wb_akey,
  wb_skey,
  $_session['keys']['oauth_token'],
  $_session['keys']['oauth_token_secret'] );
  $last_key = $o->getaccesstoken( $_request['oauth_verifier']);
  回声($last_key['oauth_token']);
  以上代码最终获得了用户授权的访问令牌。一共有两个值,存放在 $last_key 数组变量中。我们也可以看到最后两个参数是我们之前设置的session值。至此,基本完成。这是一个完整的新浪微博用户授权流程。
  授权完成后工作
  授权完成后,我们就可以开始调用新浪微博提供的各种api函数接口进行实际应用开发了。这里我简单介绍一下获取最新微博记录的界面。其他类似。
  获取新浪微博最新信息的API接口函数为:public_timeline(),示例代码如下:
  复制代码代码如下:
  //获取前20条最新更新的公众微博新闻
  $c = 新微博客户端( wb_akey,
  wb_skey,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c->public_timeline();
  if ($msg === false || $msg === null){
  echo "发生错误";
  返回假;
  }
  if (isset($msg['error_code']) && isset($msg['error'])){
  echo ('error_code:'.$msg['error_code'].'; error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常,我们在获取到用户授权的访问令牌的值后,将它们保存在我们的用户表中,并与我们应用程序中的帐户对应。之后我们就不用每次调用新浪微博的API接口都去。认证。
  上面的代码很简单,实例化weiboclient对象,然后直接调用接口函数public_timeline获取返回的信息,如果没有错误。通常新浪微博api接口返回的数据格式一般是json格式或者xml格式,而我们这里是用php开发的,使用json格式数据有先天优势,如果返回json格式数据,直接用php函数 json_decode() 可以转换为 PHP 常用的数组格式。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博api开发内容一个整理和说明,应用开发)
  现在玩微博的人越来越多,关于微博的第三方应用开​​发也越来越多。偶然接触到新浪微博API开发。新浪微博API开发资源比较大。新浪微博为开发者提供了一个平台。URL为: 收录新浪微博开发的综合信息,包括开发者的使用和介绍,各种语言的api功能介绍文档,sdk等资料。.
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。内容组织和解释,
  新浪微博API开发前的准备
  首先到新浪微博开放平台下载基于PHP的SDK开发包。下载地址为:
  下载完成后放到自己的开发环境中解压。演示程序也包括在内。我们可以参考它的示例程序进行编写。
  新浪微博API开发最重要的用户授权流程
  事实上,开发过程中的很多问题都集中在用户授权阶段。我开发的第三方应用使用的是oauth授权。oauth授权的流程在新浪微博开放平台上做了清晰完整的介绍。我们你可以看看。这里我从实例开发的角度进行介绍和讲解。
  1.首先获取未授权的请求令牌
  复制代码代码如下:
  $o = new weibooauth( wb_akey, wb_skey );
  $keys = $o->getrequesttoken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我们需要在新浪微博开放平台注册一个账号,或者直接用我们的新浪微博账号登录,进入我的应用,然后按照提示创建我们自己的第三方应用。创建完成后,我们可以得到两个授权app key和app secret值,这两个值是我们应用开发的关键。
  获取到授权值后,我们可以通过上面的代码获取未授权的请求令牌值,该值将存储在$key数组变量中。
  2. 然后请求用户授权token
  复制代码代码如下:
  $_session['keys'] = $keys;
  aurl = $o->getauthorizeurl( $keys['oauth_token'] ,false,'');
  获取到未授权请求token值后,我们就可以使用上面的代码准备去新浪微博授权页面进行授权了。$aurl 是授权链接页面。得到$aurl后,我们可以使用header()直接跳转到它。授权页面,然后用户输入新浪微博账号和密码进行授权。授权完成后会自动跳转回你最后一个参数设置的回调页面:这个链接可以设置为上一个页面,这样授权完成后会显示 再次自动跳转回来。
  需要说明的是,需要设置会话密钥的值,在下面获取的授权访问令牌中需要该值。很多朋友可能会参考开放平台上的说明进行授权,但是发现总是报错。这通常是问题所在。您尚未设置会话的键值。当然,下面的访问令牌的值是无法获取的。必须记住这一点。
  3.最终得到用户授权的access token
  复制代码代码如下:
  $o = 新的 weibooauth( wb_akey,
  wb_skey,
  $_session['keys']['oauth_token'],
  $_session['keys']['oauth_token_secret'] );
  $last_key = $o->getaccesstoken( $_request['oauth_verifier']);
  回声($last_key['oauth_token']);
  以上代码最终获得了用户授权的访问令牌。一共有两个值,存放在 $last_key 数组变量中。我们也可以看到最后两个参数是我们之前设置的session值。至此,基本完成。这是一个完整的新浪微博用户授权流程。
  授权完成后工作
  授权完成后,我们就可以开始调用新浪微博提供的各种api函数接口进行实际应用开发了。这里我简单介绍一下获取最新微博记录的界面。其他类似。
  获取新浪微博最新信息的API接口函数为:public_timeline(),示例代码如下:
  复制代码代码如下:
  //获取前20条最新更新的公众微博新闻
  $c = 新微博客户端( wb_akey,
  wb_skey,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c->public_timeline();
  if ($msg === false || $msg === null){
  echo "发生错误";
  返回假;
  }
  if (isset($msg['error_code']) && isset($msg['error'])){
  echo ('error_code:'.$msg['error_code'].'; error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常,我们在获取到用户授权的访问令牌的值后,将它们保存在我们的用户表中,并与我们应用程序中的帐户对应。之后我们就不用每次调用新浪微博的API接口都去。认证。
  上面的代码很简单,实例化weiboclient对象,然后直接调用接口函数public_timeline获取返回的信息,如果没有错误。通常新浪微博api接口返回的数据格式一般是json格式或者xml格式,而我们这里是用php开发的,使用json格式数据有先天优势,如果返回json格式数据,直接用php函数 json_decode() 可以转换为 PHP 常用的数组格式。

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博API研究研究实现发布微博功能的授权认证)

网站优化优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-10-24 00:08 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博API研究研究实现发布微博功能的授权认证)
  本文文章主要介绍Java使用新浪微博API通过账号密码登录微博的例子。一般来说,第三方app使用OAuth授权鉴权,然后跳转。账号方式更自由,有需要的朋友可以参考
  今天发表了一篇关于新浪微博API的研究,现在已经实现了发布微博的功能,包括带图片的微博。为安全起见,新浪微博API不提供微博账号密码登录功能。相反,它使用 OAuth 授权。用户通过浏览器访问新浪网站进行登录,登录成功后,浏览器将key和secret返回给程序。
  主文件:
  一个登录按钮、一个输入框和一个发布按钮
  因为要接收浏览器返回的数据,所以AndroidManifest.xml在注册Activity的时候必须添加一个Intent-Filter
  意图过滤器必须分两部分编写。如果写在一起,就不能启动。
  为简单起见,直接复制新浪示例中的OAuthConstant类:
   package weibo4android.androidexamples; import weibo4android.Weibo; import weibo4android.http.AccessToken; import weibo4android.http.RequestToken; public class OAuthConstant { private static Weibo weibo=null; private static OAuthConstant instance=null; private RequestToken requestToken; private AccessToken accessToken; private String token; private String tokenSecret; private OAuthConstant(){}; public static synchronized OAuthConstant getInstance(){ if(instance==null) instance= new OAuthConstant(); return instance; } public Weibo getWeibo(){ if(weibo==null) weibo= new Weibo(); return weibo; } public AccessToken getAccessToken() { return accessToken; } public void setAccessToken(AccessToken accessToken) { this.accessToken = accessToken; this.token=accessToken.getToken(); this.tokenSecret=accessToken.getTokenSecret(); } public RequestToken getRequestToken() { return requestToken; } public void setRequestToken(RequestToken requestToken) { this.requestToken = requestToken; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public String getTokenSecret() { return tokenSecret; } public void setTokenSecret(String tokenSecret) { this.tokenSecret = tokenSecret; } }
  接下来是最关键的主程序:
   package com.pocketdigi.weibo; import java.io.File; import weibo4android.Weibo; import weibo4android.WeiboException; import weibo4android.http.AccessToken; import weibo4android.http.RequestToken; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Main extends Activity { /** Called when the activity is first created. */ String key = "", secret = ""; Button login,send; EditText status; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); System.setProperty("weibo4j.oauth.consumerKey", "3997936609"); System.setProperty("weibo4j.oauth.consumerSecret", "8bc9e3bfd6ae8e3b2b8bda9079918950"); //设置在新浪应用开放平台申请的应用的key和secret login=(Button)findViewById(R.id.login); send=(Button)findViewById(R.id.send); status=(EditText)findViewById(R.id.status); login.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub login(); //登录 }}); send.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub String text=String.valueOf(status.getText()); Weibo weibo = new Weibo(); weibo.setToken(key,secret); try { //weibo.updateStatus(text); //只发文字 File f=new File("/sdcard/wallpaper/129567208597069400.jpg"); weibo.uploadStatus(text,f ); //发文字+图片,这里需要导入commons-httpclient-3.0.1.jar,自己网上下 //在实际项目上,最好放Thread里,因为按下去的时候按钮会卡 } catch (WeiboException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); //启动时执行检测是否来自网页登录返回 //如果是,获取key和secret //否则读取SharedPreferences //若得不到key和secret,直接跳转登录 Uri uri = this.getIntent().getData(); if (uri != null) { //如果是浏览器返回 try { RequestToken requestToken = OAuthConstant.getInstance() .getRequestToken(); AccessToken accessToken = requestToken.getAccessToken(uri .getQueryParameter("oauth_verifier")); OAuthConstant.getInstance().setAccessToken(accessToken); // 保存 Editor sharedata = getSharedPreferences("WeiBo", 0).edit(); sharedata.putString("key", accessToken.getToken()); sharedata.putString("secret", accessToken.getTokenSecret()); sharedata.commit(); key = accessToken.getToken(); secret = accessToken.getTokenSecret(); } catch (WeiboException e) { e.printStackTrace(); } } else { //如果是用户自己启动 SharedPreferences settings = getSharedPreferences("WeiBo", 0); key = settings.getString("key", ""); secret = settings.getString("secret", ""); } if (key.equals("") || secret.equals("")) { Toast.makeText(this, "尚未登录", Toast.LENGTH_LONG).show(); login(); //跳转到浏览器登录 } } public void login(){ Weibo weibo = OAuthConstant.getInstance().getWeibo(); RequestToken requestToken; try { requestToken =weibo.getOAuthRequestToken("sina://weibo"); //为了避免与同类应用冲突,还是自己改下URI吧 Uri uri2 = Uri.parse(requestToken.getAuthenticationURL()+ "&from=xweibo"); OAuthConstant.getInstance().setRequestToken(requestToken); startActivity(new Intent(Intent.ACTION_VIEW, uri2)); } catch (WeiboException e) { e.printStackTrace(); } } }
  发送图片需要导入commons-httpclient-3.0.1.jar,否则会报启动错误,当然是weibo4android-1.2.@ >0.jar 是不可接受的 Less
  以上是Java使用新浪微博API通过账号密码登录微博实例的详细内容。更多详情请关注html中文网站其他相关文章! 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博API研究研究实现发布微博功能的授权认证)
  本文文章主要介绍Java使用新浪微博API通过账号密码登录微博的例子。一般来说,第三方app使用OAuth授权鉴权,然后跳转。账号方式更自由,有需要的朋友可以参考
  今天发表了一篇关于新浪微博API的研究,现在已经实现了发布微博的功能,包括带图片的微博。为安全起见,新浪微博API不提供微博账号密码登录功能。相反,它使用 OAuth 授权。用户通过浏览器访问新浪网站进行登录,登录成功后,浏览器将key和secret返回给程序。
  主文件:
  一个登录按钮、一个输入框和一个发布按钮
  因为要接收浏览器返回的数据,所以AndroidManifest.xml在注册Activity的时候必须添加一个Intent-Filter
  意图过滤器必须分两部分编写。如果写在一起,就不能启动。
  为简单起见,直接复制新浪示例中的OAuthConstant类:
   package weibo4android.androidexamples; import weibo4android.Weibo; import weibo4android.http.AccessToken; import weibo4android.http.RequestToken; public class OAuthConstant { private static Weibo weibo=null; private static OAuthConstant instance=null; private RequestToken requestToken; private AccessToken accessToken; private String token; private String tokenSecret; private OAuthConstant(){}; public static synchronized OAuthConstant getInstance(){ if(instance==null) instance= new OAuthConstant(); return instance; } public Weibo getWeibo(){ if(weibo==null) weibo= new Weibo(); return weibo; } public AccessToken getAccessToken() { return accessToken; } public void setAccessToken(AccessToken accessToken) { this.accessToken = accessToken; this.token=accessToken.getToken(); this.tokenSecret=accessToken.getTokenSecret(); } public RequestToken getRequestToken() { return requestToken; } public void setRequestToken(RequestToken requestToken) { this.requestToken = requestToken; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public String getTokenSecret() { return tokenSecret; } public void setTokenSecret(String tokenSecret) { this.tokenSecret = tokenSecret; } }
  接下来是最关键的主程序:
   package com.pocketdigi.weibo; import java.io.File; import weibo4android.Weibo; import weibo4android.WeiboException; import weibo4android.http.AccessToken; import weibo4android.http.RequestToken; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Main extends Activity { /** Called when the activity is first created. */ String key = "", secret = ""; Button login,send; EditText status; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); System.setProperty("weibo4j.oauth.consumerKey", "3997936609"); System.setProperty("weibo4j.oauth.consumerSecret", "8bc9e3bfd6ae8e3b2b8bda9079918950"); //设置在新浪应用开放平台申请的应用的key和secret login=(Button)findViewById(R.id.login); send=(Button)findViewById(R.id.send); status=(EditText)findViewById(R.id.status); login.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub login(); //登录 }}); send.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub String text=String.valueOf(status.getText()); Weibo weibo = new Weibo(); weibo.setToken(key,secret); try { //weibo.updateStatus(text); //只发文字 File f=new File("/sdcard/wallpaper/129567208597069400.jpg"); weibo.uploadStatus(text,f ); //发文字+图片,这里需要导入commons-httpclient-3.0.1.jar,自己网上下 //在实际项目上,最好放Thread里,因为按下去的时候按钮会卡 } catch (WeiboException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); //启动时执行检测是否来自网页登录返回 //如果是,获取key和secret //否则读取SharedPreferences //若得不到key和secret,直接跳转登录 Uri uri = this.getIntent().getData(); if (uri != null) { //如果是浏览器返回 try { RequestToken requestToken = OAuthConstant.getInstance() .getRequestToken(); AccessToken accessToken = requestToken.getAccessToken(uri .getQueryParameter("oauth_verifier")); OAuthConstant.getInstance().setAccessToken(accessToken); // 保存 Editor sharedata = getSharedPreferences("WeiBo", 0).edit(); sharedata.putString("key", accessToken.getToken()); sharedata.putString("secret", accessToken.getTokenSecret()); sharedata.commit(); key = accessToken.getToken(); secret = accessToken.getTokenSecret(); } catch (WeiboException e) { e.printStackTrace(); } } else { //如果是用户自己启动 SharedPreferences settings = getSharedPreferences("WeiBo", 0); key = settings.getString("key", ""); secret = settings.getString("secret", ""); } if (key.equals("") || secret.equals("")) { Toast.makeText(this, "尚未登录", Toast.LENGTH_LONG).show(); login(); //跳转到浏览器登录 } } public void login(){ Weibo weibo = OAuthConstant.getInstance().getWeibo(); RequestToken requestToken; try { requestToken =weibo.getOAuthRequestToken("sina://weibo"); //为了避免与同类应用冲突,还是自己改下URI吧 Uri uri2 = Uri.parse(requestToken.getAuthenticationURL()+ "&from=xweibo"); OAuthConstant.getInstance().setRequestToken(requestToken); startActivity(new Intent(Intent.ACTION_VIEW, uri2)); } catch (WeiboException e) { e.printStackTrace(); } } }
  发送图片需要导入commons-httpclient-3.0.1.jar,否则会报启动错误,当然是weibo4android-1.2.@ >0.jar 是不可接受的 Less
  以上是Java使用新浪微博API通过账号密码登录微博实例的详细内容。更多详情请关注html中文网站其他相关文章!

使用新浪微博开放平台api同步微博内容至自己网站( 更好预置多个云服务系统权限管理专家的工作流程(组图))

网站优化优采云 发表了文章 • 0 个评论 • 124 次浏览 • 2021-10-23 20:13 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(
更好预置多个云服务系统权限管理专家的工作流程(组图))
  
  统一身份认证服务(Identity and Access Management,简称IAM)为您打造专属的权限管理专家。帮助您为每个员工创建独立的用户名和密码,避免密码共享带来的安全风险。同时,合理配置这些资源的使用权限,满足您对用户权限的安全管控要求。为了帮助您更好地管理权限,IAM预设了多个云服务系统权限。如果系统权限不能满足您的要求,您还可以创建自定义策略来确保精细的权限管理。华为云权限管理,我们专业!
  下面通过一个简单的例子,详细向您展示如何在权限管理专家的帮助下更好地管理和控制华为云资源。
  A公司的账户拥有多个华为云资源,图1所示的各个职能团队需要被授予相应的资源使用权限。在IAM中,为每个团队设置权限,以实现团队之间的权限分离,员工各司其职。
  图1 A公司人员结构
  
  表1 权限分布
  
  权限管理流程
  了解了公司架构和各职能团队需要配置的权限后,就该让权限管理专家上台了。下面以爱丽丝作为安全管理团队的一员,配置“华北-北京4”区域的Anti-DDoS和AAD服务的所有执行权限为例,给大家展示一个权限管理专家的工作流程.
  图1 权限管理流程图
  
  第一步:创建用户组并授权
  据了解,该公司有五个职能团队,管理组(admin)由IAM预设。管理组中的用户可以帮助该帐户创建其他用户组。以下是我们的管理员帮助创建用户组并对其进行授权。
  管理员进入统一身份认证控制台,点击左侧导航栏中的“用户组”>页面右上角的“创建用户组”,输入用户组名称为“安全管理团队”和描述(可选) ),点击“确定”完成用户组的创建。
  
  在上图所示的用户组列表中,点击用户组名称右侧的“权限配置”,进入用户组详情页面。单击“权限管理”选项卡下的“配置权限”。
  
  在用户组授权页面,选择权限范围“区域项目>cn-north-4[华北-北京四]”,选择需要的权限“防DDoS管理员”和“CAD管理员”,点击“确定”完成用户组授权。
  
  用户组创建并授权后,您可以在用户组列表中查看创建的用户组,在用户组详情页面查看授予用户组的权限。
  第 2 步:创建 IAM 用户并加入用户组
  创建用户组后,管理员需要为每个员工创建一个IAM用户,并将其添加到相应的用户组中。将用户添加到用户组,该用户将拥有该用户组的权限。这个过程是对用户进行授权。
  管理员进入统一身份认证控制台,点击左侧导航栏中的“用户”>页面右上角的“创建用户”。
  
  输入用户名“Alice”、邮箱地址、手机号码(可选)、描述(可选),选择“华为云管理控制台访问”>“首次登录时设置”,开启登录保护,点击“下一步”。
  
  阐明:
  如果开发团队的Keith和Kelly需要通过API调用访问华为云,访问方式可以是“程序化访问”。想了解更多请戳→
  3. 选择“安全管理团队”,点击“创建用户”,完成IAM用户授权。
  第 3 步:IAM 用户登录
  完成以上步骤后,Alice就拥有了自己的华为云专属通行证,只允许她访问“华北-北京4”区域的Anti-DDoS和AAD服务。最后,请爱丽丝登录华为云,开启华为云的精彩之旅!
  在华为云登录页面,点击登录下的“IAM用户登录”。在“IAM用户登录”页面,输入账号名、用户名/邮箱和密码,点击“登录”登录华为云。
  
  切换区域为【华北-北京4】,Alice可以访问DDoS服务(Anti-DDoS)、DDoS高防服务(AAD),为项目安全保驾护航。
  
  至此,正确的管理专家能否“离开”?不,他会一直坚守岗位!
  当您需要更改用户权限时,您可以通过用户组添加/删除用户。
  当您需要更改用户组权限时,您可以这样做。
  当需要取消用户组的权限时,可以通过删除该用户组的权限来实现。
  解决方案多于问题
  如果管理员在IAM控制台为IAM用户设置了权限,IAM用户登录后发现权限没有生效,请继续往下看。
  可能原因一:管理员授予的权限有依赖角色,且依赖角色没有同步设置,导致权限不生效。角色的依赖请参考:系统权限。
  解决方案:重新授权依赖角色。方法请参考:依赖角色授权方法。
  可能原因2:管理员授权用户组后忘记将IAM用户添加到用户组。
  解决方案:将 IAM 用户添加到用户组。请参考方法:将用户添加到用户组。
  可能原因3:区域级业务,未在相应区域进行授权。
  解决方法:在对IAM所在的用户组进行授权时,选择对应的区域。请参考方法:创建用户组并授权。
  可能原因4:IAM用户登录控制台后没有切换到授权区域。
  解决方法:请切换到授权区域。请参阅:。
  欢迎观看更多IAM资讯 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(
更好预置多个云服务系统权限管理专家的工作流程(组图))
  
  统一身份认证服务(Identity and Access Management,简称IAM)为您打造专属的权限管理专家。帮助您为每个员工创建独立的用户名和密码,避免密码共享带来的安全风险。同时,合理配置这些资源的使用权限,满足您对用户权限的安全管控要求。为了帮助您更好地管理权限,IAM预设了多个云服务系统权限。如果系统权限不能满足您的要求,您还可以创建自定义策略来确保精细的权限管理。华为云权限管理,我们专业!
  下面通过一个简单的例子,详细向您展示如何在权限管理专家的帮助下更好地管理和控制华为云资源。
  A公司的账户拥有多个华为云资源,图1所示的各个职能团队需要被授予相应的资源使用权限。在IAM中,为每个团队设置权限,以实现团队之间的权限分离,员工各司其职。
  图1 A公司人员结构
  
  表1 权限分布
  
  权限管理流程
  了解了公司架构和各职能团队需要配置的权限后,就该让权限管理专家上台了。下面以爱丽丝作为安全管理团队的一员,配置“华北-北京4”区域的Anti-DDoS和AAD服务的所有执行权限为例,给大家展示一个权限管理专家的工作流程.
  图1 权限管理流程图
  
  第一步:创建用户组并授权
  据了解,该公司有五个职能团队,管理组(admin)由IAM预设。管理组中的用户可以帮助该帐户创建其他用户组。以下是我们的管理员帮助创建用户组并对其进行授权。
  管理员进入统一身份认证控制台,点击左侧导航栏中的“用户组”>页面右上角的“创建用户组”,输入用户组名称为“安全管理团队”和描述(可选) ),点击“确定”完成用户组的创建。
  
  在上图所示的用户组列表中,点击用户组名称右侧的“权限配置”,进入用户组详情页面。单击“权限管理”选项卡下的“配置权限”。
  
  在用户组授权页面,选择权限范围“区域项目>cn-north-4[华北-北京四]”,选择需要的权限“防DDoS管理员”和“CAD管理员”,点击“确定”完成用户组授权。
  
  用户组创建并授权后,您可以在用户组列表中查看创建的用户组,在用户组详情页面查看授予用户组的权限。
  第 2 步:创建 IAM 用户并加入用户组
  创建用户组后,管理员需要为每个员工创建一个IAM用户,并将其添加到相应的用户组中。将用户添加到用户组,该用户将拥有该用户组的权限。这个过程是对用户进行授权。
  管理员进入统一身份认证控制台,点击左侧导航栏中的“用户”>页面右上角的“创建用户”。
  
  输入用户名“Alice”、邮箱地址、手机号码(可选)、描述(可选),选择“华为云管理控制台访问”>“首次登录时设置”,开启登录保护,点击“下一步”。
  
  阐明:
  如果开发团队的Keith和Kelly需要通过API调用访问华为云,访问方式可以是“程序化访问”。想了解更多请戳→
  3. 选择“安全管理团队”,点击“创建用户”,完成IAM用户授权。
  第 3 步:IAM 用户登录
  完成以上步骤后,Alice就拥有了自己的华为云专属通行证,只允许她访问“华北-北京4”区域的Anti-DDoS和AAD服务。最后,请爱丽丝登录华为云,开启华为云的精彩之旅!
  在华为云登录页面,点击登录下的“IAM用户登录”。在“IAM用户登录”页面,输入账号名、用户名/邮箱和密码,点击“登录”登录华为云。
  
  切换区域为【华北-北京4】,Alice可以访问DDoS服务(Anti-DDoS)、DDoS高防服务(AAD),为项目安全保驾护航。
  
  至此,正确的管理专家能否“离开”?不,他会一直坚守岗位!
  当您需要更改用户权限时,您可以通过用户组添加/删除用户。
  当您需要更改用户组权限时,您可以这样做。
  当需要取消用户组的权限时,可以通过删除该用户组的权限来实现。
  解决方案多于问题
  如果管理员在IAM控制台为IAM用户设置了权限,IAM用户登录后发现权限没有生效,请继续往下看。
  可能原因一:管理员授予的权限有依赖角色,且依赖角色没有同步设置,导致权限不生效。角色的依赖请参考:系统权限。
  解决方案:重新授权依赖角色。方法请参考:依赖角色授权方法。
  可能原因2:管理员授权用户组后忘记将IAM用户添加到用户组。
  解决方案:将 IAM 用户添加到用户组。请参考方法:将用户添加到用户组。
  可能原因3:区域级业务,未在相应区域进行授权。
  解决方法:在对IAM所在的用户组进行授权时,选择对应的区域。请参考方法:创建用户组并授权。
  可能原因4:IAM用户登录控制台后没有切换到授权区域。
  解决方法:请切换到授权区域。请参阅:。
  欢迎观看更多IAM资讯

使用新浪微博开放平台api同步微博内容至自己网站(本地测试阶段如何申请后面讲述WAP网站提供两种验证方式)

网站优化优采云 发表了文章 • 0 个评论 • 69 次浏览 • 2021-10-23 02:11 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(本地测试阶段如何申请后面讲述WAP网站提供两种验证方式)
  新浪微博网站接入应用教程(含本地测试)织梦无忧站长随笔2020-09-21 13:59
  总结:进入新浪微博开放平台,用账号登录。点击【网站访问】或在顶部菜单中选择【微连接】进入网站访问页面。左侧提供了一系列开放平台的公共组件,可以在你的网站中直接引用。申请微连接appKey,点击【开始访问】按钮。这里
  进入新浪微博开放平台,使用账号登录。
  
  点击【网站访问】或在顶部菜单中选择【微连接】进入网站访问页面。
  
  左侧提供了一系列开放平台的公共组件,可以在你的网站中直接引用。
  
  申请微连接appKey,点击【开始访问】按钮。
  
  这里有两点需要注意:
  1 以这种方式申请appKey,前提是你的网站必须使用过域名并且在互联网上运行。如果您处于本地测试阶段,此方法将不起作用。如何申请本地测试阶段将在后面介绍。
  2网站提供了两种验证方式来验证您是否拥有网站的管理员权限。请注意这两种方法之间的区别。
  没有自动重定向的网站
  
  具有自动重定向功能的网站或 WAP 站点
  
  将验证码添加到您的网站首页后,点击下方的【验证并添加】按钮。按照提示操作。
  注意:如果此步骤不成功,请参考新浪提供的提示信息仔细分析。如果实在找不到问题,不妨试试以上两种验证方式。
  从这一步开始,如何在本地调试阶段应用。
  因为没有本地调试的域名,直接访问网站是不行的。需要使用web应用来实现本地调试。
  很多人在申请的时候都找不到web应用的选项。这是一个解释:
  (1)开放平台首页,直接点击【微连接】菜单。
  
  注意不要在【微连接】菜单下点击网站上的应用,点击网站上的应用后的页面不会是同一个页面。
  
  进入页面如下图:
  
  (2)这时候点击【创建应用】按钮,会弹出各种应用类型,然后会出现web应用。
  
  点击【Web应用】进入应用页面。
  
  这里的申请地址可以填写IP地址,方便我们测试。
  
  创建 Web 应用程序后,还没有结束。点击【管理中心】进入我们刚刚申请的应用。点击左侧申请信息中的基本信息。
  
  点击右侧编辑,注意下图中高亮的地方。
  
  申请地址是指微博发布时显示的来源地址(不通过将无法正确显示)。
  安全域名是必须的,因为新浪微博的Api需要通过域名访问,否则会报错。所以下一步是关键。
  设置本地环境域名映射。
  (1)在操作系统hosts文件中添加本地域名映射。
  
  (2)在上述安全域名中配置本地自定义域名。
  点击【高级信息】进行设置。
  
  授权设置是调用api成功后返回的页面。
  安全设置指定应用程序部署的 IP 地址。
  至此,新浪微博appKey申请成功,可以开始自己的本地调试路径了。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(本地测试阶段如何申请后面讲述WAP网站提供两种验证方式)
  新浪微博网站接入应用教程(含本地测试)织梦无忧站长随笔2020-09-21 13:59
  总结:进入新浪微博开放平台,用账号登录。点击【网站访问】或在顶部菜单中选择【微连接】进入网站访问页面。左侧提供了一系列开放平台的公共组件,可以在你的网站中直接引用。申请微连接appKey,点击【开始访问】按钮。这里
  进入新浪微博开放平台,使用账号登录。
  
  点击【网站访问】或在顶部菜单中选择【微连接】进入网站访问页面。
  
  左侧提供了一系列开放平台的公共组件,可以在你的网站中直接引用。
  
  申请微连接appKey,点击【开始访问】按钮。
  
  这里有两点需要注意:
  1 以这种方式申请appKey,前提是你的网站必须使用过域名并且在互联网上运行。如果您处于本地测试阶段,此方法将不起作用。如何申请本地测试阶段将在后面介绍。
  2网站提供了两种验证方式来验证您是否拥有网站的管理员权限。请注意这两种方法之间的区别。
  没有自动重定向的网站
  
  具有自动重定向功能的网站或 WAP 站点
  
  将验证码添加到您的网站首页后,点击下方的【验证并添加】按钮。按照提示操作。
  注意:如果此步骤不成功,请参考新浪提供的提示信息仔细分析。如果实在找不到问题,不妨试试以上两种验证方式。
  从这一步开始,如何在本地调试阶段应用。
  因为没有本地调试的域名,直接访问网站是不行的。需要使用web应用来实现本地调试。
  很多人在申请的时候都找不到web应用的选项。这是一个解释:
  (1)开放平台首页,直接点击【微连接】菜单。
  
  注意不要在【微连接】菜单下点击网站上的应用,点击网站上的应用后的页面不会是同一个页面。
  
  进入页面如下图:
  
  (2)这时候点击【创建应用】按钮,会弹出各种应用类型,然后会出现web应用。
  
  点击【Web应用】进入应用页面。
  
  这里的申请地址可以填写IP地址,方便我们测试。
  
  创建 Web 应用程序后,还没有结束。点击【管理中心】进入我们刚刚申请的应用。点击左侧申请信息中的基本信息。
  
  点击右侧编辑,注意下图中高亮的地方。
  
  申请地址是指微博发布时显示的来源地址(不通过将无法正确显示)。
  安全域名是必须的,因为新浪微博的Api需要通过域名访问,否则会报错。所以下一步是关键。
  设置本地环境域名映射。
  (1)在操作系统hosts文件中添加本地域名映射。
  
  (2)在上述安全域名中配置本地自定义域名。
  点击【高级信息】进行设置。
  
  授权设置是调用api成功后返回的页面。
  安全设置指定应用程序部署的 IP 地址。
  至此,新浪微博appKey申请成功,可以开始自己的本地调试路径了。

使用新浪微博开放平台api同步微博内容至自己网站( 利用PHP进行新浪微博API开发的内容进行一个整理和说明)

网站优化优采云 发表了文章 • 0 个评论 • 68 次浏览 • 2021-10-23 02:08 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(
利用PHP进行新浪微博API开发的内容进行一个整理和说明)
  新浪微博API开发用户授权介绍(PHP基础)
  更新时间:2011-09-25 22:52:37 作者:
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。整理和说明内容
  现在玩微博的人越来越多,微博上的第三方应用开​​发也越来越多。偶然接触到新浪微博API开发。新浪微博API开发资源比较大。新浪微博为开发者提供了一个平台。网站为: 收录新浪微博开发的综合信息,包括开发者的使用和介绍、各种语言的API功能介绍文档、SDK等资料。.
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。内容组织和解释,
  新浪微博API开发前的准备
  首先到新浪微博开放平台下载基于PHP的SDK开发包。下载地址为:
  下载完成后放到自己的开发环境中解压。演示程序也包括在内。我们可以参考它的示例程序进行编写。
  新浪微博API开发最重要的用户授权流程
  事实上,开发过程中的很多问题都集中在用户授权阶段。我开发的第三方应用使用的是OAuth授权。OAuth授权流程在新浪微博开放平台上有非常清晰完整的介绍。我们你可以看看。这里我将从示例开发的角度进行介绍和说明。
  1.首先获取未授权的Request Token
  复制代码代码如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o->getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我们需要在新浪微博开放平台注册一个账号,或者直接用我们的新浪微博账号登录,进入我的应用,然后按照提示创建我们自己的第三方应用。创建完成后,我们可以得到两个授权App Key和App Secret值,这两个值是我们应用开发的关键。
  获取到授权值后,我们可以通过上面的代码来获取未授权的Request Token值,该值会保存在$key数组变量中。
  2. 然后请求用户授权token
  复制代码代码如下:
  $_SESSION['keys'] = $keys;
  aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false,'');
  获取到未授权Request Token值后,我们就可以使用上面的代码准备去新浪微博授权页面进行授权了。$aurl 是授权链接页面。得到$aurl后,我们可以使用header()直接跳转到它。授权页面,然后用户输入新浪微博账号和密码进行授权。授权完成后会自动跳转回你最后一个参数设置的回调页面:这个链接可以设置为上一个页面,这样授权完成后会显示 再次自动跳转回来。
  需要说明的是,需要设置session key的值,下面获取的授权Access Token中需要该值。很多朋友可能会参考开放平台上的说明进行授权,但是发现总是报错。这通常是问题所在。您尚未设置会话的键值。当然,下面的Access Token的值是无法获取的。必须记住这一点。
  3.用户最后授权的Access Token
  复制代码代码如下:
  $o = new WeiboOAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o->getAccessToken( $_REQUEST['oauth_verifier']);
  回声($last_key['oauth_token']);
  以上代码最终获得了用户授权的Access Token。有两个值,它们存储在 $last_key 数组变量中。我们也可以看到最后两个参数是我们之前设置的session值。至此,基本完成。这是一个完整的新浪微博用户授权流程。
  授权完成后工作
  授权完成后,我们就可以开始调用新浪微博提供的各种API函数接口进行实际应用开发了。这里我简单介绍一下获取最新微博记录的界面。其他类似。
  获取新浪微博最新信息的API接口函数为:public_timeline(),示例代码如下:
  复制代码代码如下:
  //获取前20条最新更新的公众微博新闻
  $c = 新微博客户端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c->public_timeline();
  if ($msg === false || $msg === null){
  echo "发生错误";
  返回假;
  }
  if (isset($msg['error_code']) && isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error'] );
  返回假;
  }
  打印_r($msg);
  通常我们拿到用户授权的访问令牌值后,我们将它们保存在我们的用户表中,并与我们应用程序中的帐户相对应。之后我们就不用每次调用新浪微博的API接口都去。认证。
  上面的代码很简单,实例化WeiboClient对象,然后直接调用接口函数public_timeline获取返回的信息,如果没有错误。通常新浪微博api接口返回的数据格式一般是Json格式或者xml格式,而我们这里是用php开发的,使用Json格式的数据有先天优势,如果返回Json格式的数据,使用php 函数 json_decode() 可以直接转换成 PHP 常用的数组格式。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(
利用PHP进行新浪微博API开发的内容进行一个整理和说明)
  新浪微博API开发用户授权介绍(PHP基础)
  更新时间:2011-09-25 22:52:37 作者:
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。整理和说明内容
  现在玩微博的人越来越多,微博上的第三方应用开​​发也越来越多。偶然接触到新浪微博API开发。新浪微博API开发资源比较大。新浪微博为开发者提供了一个平台。网站为: 收录新浪微博开发的综合信息,包括开发者的使用和介绍、各种语言的API功能介绍文档、SDK等资料。.
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。内容组织和解释,
  新浪微博API开发前的准备
  首先到新浪微博开放平台下载基于PHP的SDK开发包。下载地址为:
  下载完成后放到自己的开发环境中解压。演示程序也包括在内。我们可以参考它的示例程序进行编写。
  新浪微博API开发最重要的用户授权流程
  事实上,开发过程中的很多问题都集中在用户授权阶段。我开发的第三方应用使用的是OAuth授权。OAuth授权流程在新浪微博开放平台上有非常清晰完整的介绍。我们你可以看看。这里我将从示例开发的角度进行介绍和说明。
  1.首先获取未授权的Request Token
  复制代码代码如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o->getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我们需要在新浪微博开放平台注册一个账号,或者直接用我们的新浪微博账号登录,进入我的应用,然后按照提示创建我们自己的第三方应用。创建完成后,我们可以得到两个授权App Key和App Secret值,这两个值是我们应用开发的关键。
  获取到授权值后,我们可以通过上面的代码来获取未授权的Request Token值,该值会保存在$key数组变量中。
  2. 然后请求用户授权token
  复制代码代码如下:
  $_SESSION['keys'] = $keys;
  aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false,'');
  获取到未授权Request Token值后,我们就可以使用上面的代码准备去新浪微博授权页面进行授权了。$aurl 是授权链接页面。得到$aurl后,我们可以使用header()直接跳转到它。授权页面,然后用户输入新浪微博账号和密码进行授权。授权完成后会自动跳转回你最后一个参数设置的回调页面:这个链接可以设置为上一个页面,这样授权完成后会显示 再次自动跳转回来。
  需要说明的是,需要设置session key的值,下面获取的授权Access Token中需要该值。很多朋友可能会参考开放平台上的说明进行授权,但是发现总是报错。这通常是问题所在。您尚未设置会话的键值。当然,下面的Access Token的值是无法获取的。必须记住这一点。
  3.用户最后授权的Access Token
  复制代码代码如下:
  $o = new WeiboOAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o->getAccessToken( $_REQUEST['oauth_verifier']);
  回声($last_key['oauth_token']);
  以上代码最终获得了用户授权的Access Token。有两个值,它们存储在 $last_key 数组变量中。我们也可以看到最后两个参数是我们之前设置的session值。至此,基本完成。这是一个完整的新浪微博用户授权流程。
  授权完成后工作
  授权完成后,我们就可以开始调用新浪微博提供的各种API函数接口进行实际应用开发了。这里我简单介绍一下获取最新微博记录的界面。其他类似。
  获取新浪微博最新信息的API接口函数为:public_timeline(),示例代码如下:
  复制代码代码如下:
  //获取前20条最新更新的公众微博新闻
  $c = 新微博客户端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c->public_timeline();
  if ($msg === false || $msg === null){
  echo "发生错误";
  返回假;
  }
  if (isset($msg['error_code']) && isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error'] );
  返回假;
  }
  打印_r($msg);
  通常我们拿到用户授权的访问令牌值后,我们将它们保存在我们的用户表中,并与我们应用程序中的帐户相对应。之后我们就不用每次调用新浪微博的API接口都去。认证。
  上面的代码很简单,实例化WeiboClient对象,然后直接调用接口函数public_timeline获取返回的信息,如果没有错误。通常新浪微博api接口返回的数据格式一般是Json格式或者xml格式,而我们这里是用php开发的,使用Json格式的数据有先天优势,如果返回Json格式的数据,使用php 函数 json_decode() 可以直接转换成 PHP 常用的数组格式。

使用新浪微博开放平台api同步微博内容至自己网站(注册新浪weibo允许第三方以应用的方式发布微博(组图))

网站优化优采云 发表了文章 • 0 个评论 • 84 次浏览 • 2021-10-22 15:10 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(注册新浪weibo允许第三方以应用的方式发布微博(组图))
  前言
  前不久萌生了学python的念头,于是为了练手的目的为微博做了这样一个小工具。
  登记
  新浪微博允许第三方以应用的形式发布微博,所以我们首先要做的就是通过新浪微博开放平台注册一个应用:
  
  weibo_open
  打开上述平台的页面,用微博账号登录,然后点击立即访问开始注册自己的应用,按照提示操作即可。以下是我自己创建的应用程序,名为:
  
  应用程序
  在您个人应用的应用信息-基本信息-基本应用信息中找到您的App Key和App Secret。并在高级信息中设置自己的授权回调页面(所谓授权回调页面是指个人应用通过微博账号授权后的跳转页面,设置没有问题,这里我设置为个人微博主页)。
  授权获取代码
  看了新浪的SDK,很多人可能会选择对应的python SDK。实际上,这是不必要的。界面变得更加复杂。我们在这里不使用他的界面。
  通常,通过微博界面发送微博的第三方应用需要用户授权。我想你以前也做过同样的事情,那么哪个授权页面是?
  def get_auth_url(client_id, redirect_uri):
return '%s%s?%s' % ('https://api.weibo.com/oauth2/', 'authorize',
_encode_params(client_id=client_id,
response_type='code',
redirect_uri=redirect_uri))
  client_id是你的app_key,redirect_uri是上一步填写的授权回调页面地址,复制生成的链接到浏览器打开,输入你的微博账号进行授权。
  
  授权
  授权成功后,浏览器会跳转到我们设置的授权回调页面。在浏览器地址栏找到code字段,你就会得到授权码。
  获取令牌
  接下来,我们需要通过代码获取token。这个token是我们在微博上发帖的凭证:
  def get_access_token(app_key, app_secret, redirect_url):
#通过url_auth输入weibo账号进行登录
#从登录成功后的回调url获得code
url_auth = get_auth_url(app_key, redirect_url)
print('[get_access_token]' + url_auth)
code = input('Input code:')
url_get_token = "https://api.weibo.com/oauth2/access_token"
payload = {
"client_id":app_key,
"client_secret":app_secret,
"grant_type":"authorization_code",
"code":code,
"redirect_uri":redirect_url
}

#获取access_token
res = requests.post(url_get_token, data=payload)
resj = json.loads(res.text)
return resj['access_token']
  令牌只需要获取一次,令牌可以一直重复使用。有效期好像是5年。
  微博安全域名
  新浪微博要求通过应用界面发送的每一条微博内容都必须收录一个安全的域名字段。您需要在应用信息-基本信息-应用基本信息中配置安全域名。我设置了
  调用接口
  这里的安全域名依然使用自己的微博主页,包括:
  def share_weibo(text, img):
access_token = '你的token'
#安全域名,sina限制文本内容必须有此字段
safe_domain = 'https://weibo.com/5296864682/profile?topnav=1&wvr=6'
url_share = 'https://api.weibo.com/2/statuses/share.json'

payload = {
'access_token':access_token,
'status':text + ' ' + safe_domain
}
if img :
files = {
"pic":img
}
res = requests.post(url_share, data = payload, files = files)
else :
res = requests.post(url_share, data = payload)
return res
  测试
  编写测试代码:
  if __name__ == '__main__':
f = open(r"./share.jpeg", "rb")
text = input('Input text:')
res = share_weibo(text, f)
f.close()
  跑:
  [root@localhost share_weibo]# py sina_weibo.py
Input text:hello sky
  成功发布图片微博:
  
  你好天空
  如果你想发布视频,很遗憾,新浪没有提供相应的界面。我们只能通过在文本中收录指向现有视频的链接来实现类似的效果。例如,要发布此视频:
  跑:
  [root@localhost share_weibo]# py sina_weibo.py
Input text:http://t.cn/Ail9eamb%3Fm%3D439 ... 64682
  成功发送视频的微博:
  
  视频
  你可以在我的微博上看到刚刚发送的视频。
  结束语
  还有一些接口比如注释,大家可以自己测试一下,在接口管理里面可以看到相应的介绍。
  附上源代码: 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(注册新浪weibo允许第三方以应用的方式发布微博(组图))
  前言
  前不久萌生了学python的念头,于是为了练手的目的为微博做了这样一个小工具。
  登记
  新浪微博允许第三方以应用的形式发布微博,所以我们首先要做的就是通过新浪微博开放平台注册一个应用:
  
  weibo_open
  打开上述平台的页面,用微博账号登录,然后点击立即访问开始注册自己的应用,按照提示操作即可。以下是我自己创建的应用程序,名为:
  
  应用程序
  在您个人应用的应用信息-基本信息-基本应用信息中找到您的App Key和App Secret。并在高级信息中设置自己的授权回调页面(所谓授权回调页面是指个人应用通过微博账号授权后的跳转页面,设置没有问题,这里我设置为个人微博主页)。
  授权获取代码
  看了新浪的SDK,很多人可能会选择对应的python SDK。实际上,这是不必要的。界面变得更加复杂。我们在这里不使用他的界面。
  通常,通过微博界面发送微博的第三方应用需要用户授权。我想你以前也做过同样的事情,那么哪个授权页面是?
  def get_auth_url(client_id, redirect_uri):
return '%s%s?%s' % ('https://api.weibo.com/oauth2/', 'authorize',
_encode_params(client_id=client_id,
response_type='code',
redirect_uri=redirect_uri))
  client_id是你的app_key,redirect_uri是上一步填写的授权回调页面地址,复制生成的链接到浏览器打开,输入你的微博账号进行授权。
  
  授权
  授权成功后,浏览器会跳转到我们设置的授权回调页面。在浏览器地址栏找到code字段,你就会得到授权码。
  获取令牌
  接下来,我们需要通过代码获取token。这个token是我们在微博上发帖的凭证:
  def get_access_token(app_key, app_secret, redirect_url):
#通过url_auth输入weibo账号进行登录
#从登录成功后的回调url获得code
url_auth = get_auth_url(app_key, redirect_url)
print('[get_access_token]' + url_auth)
code = input('Input code:')
url_get_token = "https://api.weibo.com/oauth2/access_token"
payload = {
"client_id":app_key,
"client_secret":app_secret,
"grant_type":"authorization_code",
"code":code,
"redirect_uri":redirect_url
}

#获取access_token
res = requests.post(url_get_token, data=payload)
resj = json.loads(res.text)
return resj['access_token']
  令牌只需要获取一次,令牌可以一直重复使用。有效期好像是5年。
  微博安全域名
  新浪微博要求通过应用界面发送的每一条微博内容都必须收录一个安全的域名字段。您需要在应用信息-基本信息-应用基本信息中配置安全域名。我设置了
  调用接口
  这里的安全域名依然使用自己的微博主页,包括:
  def share_weibo(text, img):
access_token = '你的token'
#安全域名,sina限制文本内容必须有此字段
safe_domain = 'https://weibo.com/5296864682/profile?topnav=1&wvr=6'
url_share = 'https://api.weibo.com/2/statuses/share.json'

payload = {
'access_token':access_token,
'status':text + ' ' + safe_domain
}
if img :
files = {
"pic":img
}
res = requests.post(url_share, data = payload, files = files)
else :
res = requests.post(url_share, data = payload)
return res
  测试
  编写测试代码:
  if __name__ == '__main__':
f = open(r"./share.jpeg", "rb")
text = input('Input text:')
res = share_weibo(text, f)
f.close()
  跑:
  [root@localhost share_weibo]# py sina_weibo.py
Input text:hello sky
  成功发布图片微博:
  
  你好天空
  如果你想发布视频,很遗憾,新浪没有提供相应的界面。我们只能通过在文本中收录指向现有视频的链接来实现类似的效果。例如,要发布此视频:
  跑:
  [root@localhost share_weibo]# py sina_weibo.py
Input text:http://t.cn/Ail9eamb%3Fm%3D439 ... 64682
  成功发送视频的微博:
  
  视频
  你可以在我的微博上看到刚刚发送的视频。
  结束语
  还有一些接口比如注释,大家可以自己测试一下,在接口管理里面可以看到相应的介绍。
  附上源代码:

使用新浪微博开放平台api同步微博内容至自己网站(有时候整合新浪微博的独立博客是怎么做的??)

网站优化优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2021-10-21 16:01 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(有时候整合新浪微博的独立博客是怎么做的??)
  随着新浪微博用户越来越多,我们有时会考虑将新浪微博整合到我们自己的网站中。例如,我目前的独立博客。
  我博客的整合主要是这几个方面:我写了一篇文章,同时发到微博。同时,用户可以用自己的微博账号登录,可以选择将文章的评论同步到文章的微博。此外,用户可以选择是否将博客消息同步到新浪微博。
  新浪微博开放平台地址在这里。文档地址在这里。
  首先要涉及的问题是用户使用新浪微博账号登录的问题,即授权机制。有两种基本方法:
  OAuth Basic auth(需要强调的是,微博开放平台将于6月1日正式停止支持Basic Auth,因此不讨论这种方式。实际上,要求用户名和密码的方式本质上是不安全的。)
  官方 OAuth 新浪文档在这里。想了解OAuth技术说明的可以访问项目主页。
  其实OAuth的过程还是很简单的。大致如下:
  从 API 调用中获取请求令牌。将用户重定向到授权页面(auth url)。用户输入用户名和密码完成授权。重定向到 Callback_url。将请求令牌交换到新浪微博以获取访问令牌。结束。
  大致了解了OAuth的原理后,既然是集成到Django,自然需要下载Python版的微博SDK。
  但是,在一切开始之前,您必须从新浪微博申请。申请地址在这里。这里需要强调的是,以后的应用需要申请审核,因为只有审核通过后,才能在源中显示个性化的应用名称。因此,在申请时,要注意申请介绍信息的完整性和正确的申请分类。(在这个例子中,我们的分类是合作网站。)
  申请完成后,您将获得您的申请的App Key和App Secret。
  回到授权用户登录的话题。要允许新浪微博账号访问,首先我们需要在urlpatterns中添加几个URL。如下:
  urlpatterns = patterns('projectname.appname.views', url(r'^log/$', 'login', name='log'), url(r'^logincheck/$', 'login_check', name='logcheck'), url(r'^logout/$', 'logout', name='logout'), )
  接下来,我们启动视图文件。代码:
  #!/usr/bin/env python # -*- coding: utf-8 -*- """ 基于django的新浪微博oauth views 需要django的session支持 """ from django.http import HttpResponseRedirect from weibopy.auth import OAuthHandler, WeibopError from weibopy import oauth consumer_key = '' # 设置你申请的appkey consumer_secret = '' # 设置你申请的appkey对于的secret class WebOAuthHandler(OAuthHandler): def get_authorization_url_with_callback(self, callback, signin_with_推ter=False): """Get the authorization URL to redirect the user""" try: # get the request token self.request_token = self._get_request_token() # build auth request and return as url if signin_with_推ter: url = self._get_oauth_url('authenticate') else: url = self._get_oauth_url('authorize') request = oauth.OAuthRequest.from_token_and_callback( token=self.request_token, callback=callback, http_url=url ) return request.to_url() except Exception, e: raise WeibopError(e) def _get_referer_url(request): referer_url = request.META.get('HTTP_REFERER', '/') host = request.META['HTTP_HOST'] if referer_url.startswith('http') and host not in referer_url: referer_url = '/' # 避免外站直接跳到登录页而发生跳转错误 return referer_url def _oauth(): """获取oauth认证类""" return WebOAuthHandler(consumer_key, consumer_secret) def login(request): # 保存最初的登录url,以便认证成功后跳转回来 back_to_url = _get_referer_url(request) request.session['login_back_to_url'] = back_to_url # 获取oauth认证url login_backurl = request.build_absolute_uri('/logincheck') auth_client = _oauth() auth_url = auth_client.get_authorization_url_with_callback(login_backurl) # 保存request_token,用户登录后需要使用它来获取access_token request.session['oauth_request_token'] = auth_client.request_token # 跳转到登录页面 return HttpResponseRedirect(auth_url) def login_check(request): """用户成功登录授权后,会回调此方法,获取access_token,完成授权""" # http://mk2.com/%3Foauth_token% ... 03896 verifier = request.GET.get('oauth_verifier', None) auth_client = _oauth() # 设置之前保存在session的request_token request_token = request.session['oauth_request_token'] del request.session['oauth_request_token'] auth_client.set_request_token(request_token.key, request_token.secret) access_token = auth_client.get_access_token(verifier) # 保存access_token,以后访问只需使用access_token即可 request.session['oauth_access_token'] = access_token # 跳转回最初登录前的页面 back_to_url = request.session.get('login_back_to_url', '/') return HttpResponseRedirect(back_to_url) def logout(request): """用户登出,直接删除access_token""" del request.session['oauth_access_token'] back_to_url = _get_referer_url(request) return HttpResponseRedirect(back_to_url)
  完成授权码后,接下来我们需要知道如何向新浪微博发送消息等操作。其实就是下载的sdk下exanples文件夹下的examples(没错,其实就是examples,这个是英文水平的,就不多说了)。基本上,您可以更改它并直接使用它。以oauthSetTokenUpdate.py为例,我们可以这样写:
  # -*- coding: utf-8 -*- from weibopy.auth import OAuthHandler from weibopy.api import API consumer_key= '应用的key' consumer_secret ='应用的App Secret' auth = OAuthHandler(consumer_key, consumer_secret) auth_url = auth.get_authorization_url() print 'Please authorize: ' + auth_url verifier = raw_input('PIN: ').strip() auth.get_access_token(verifier) api = API(auth) status = api.update_status(status='hello world', lat='12.3', long='45.6') # 注意status必须是UTF-8编码的字符串,经纬度是可以不写的 print status.id print status.text
  运行这个程序会提示一个URL链接,在浏览器中打开这个链接,并授予访问权限,你会得到一串PIN码。输入此 PIN 码,将发送一条推文,同时还会显示用户的访问令牌密钥和访问令牌秘密。
  但是,这是否有点太书呆子了?其实只要知道Access token key和Access token secret,我们就可以直接使用它们来创建API对象:
  # -*- coding: utf-8 -*- from weibopy.auth import OAuthHandler from weibopy.api import API consumer_key= '应用的key' consumer_secret ='应用的App Secret' token = '用户的Access token key' tokenSecret = '用户的Access token secret' auth = OAuthHandler(consumer_key, consumer_secret) auth.setToken(token, tokenSecret) api = API(auth) status = api.update_status(status='搞定收工~')
  这时候我们可以重构代码,写一个微博类来实现上述功能,实现一些api操作。
  class weibo(object): def __init__(self): self.consumer_key = consumer_key self.consumer_secret = consumer_secret def getAtt(self, key): try: return self.obj.__getattribute__(key) except Exception, e: print e return '' def getAttValue(self, obj, key): try: return obj.__getattribute__(key) except Exception, e: print e return '' def auth(self): self.auth = OAuthHandler(self.consumer_key, self.consumer_secret) auth_url = self.auth.get_authorization_url() print 'Please authorize: ' + auth_url verifier = raw_input('PIN: ').strip() self.auth.get_access_token(verifier) self.api = API(self.auth) def setToken(self, token, tokenSecret): self.auth = OAuthHandler(self.consumer_key, self.consumer_secret) self.auth.setToken(token, tokenSecret) self.api = API(self.auth) def update(self, message): message = message.encode("utf-8") status = self.api.update_status(status=message) self.obj = status id = self.getAtt("id") return id def destroy_status(self, id): status = self.api.destroy_status(id) self.obj = status id = self.getAtt("id") return id def comment(self, id, message): comment = self.api.comment(id=id, comment=message) self.obj = comment mid = self.getAtt("id") return mid def comment_destroy (self, mid): comment = self.api.comment_destroy(mid) self.obj = comment mid = self.getAtt("id") text = self.getAtt("text") return mid def repost(self, id, message): post = self.api.repost(id=id, status=message) self.obj = post mid = self.getAtt("id") return mid def get_username(self): if getattr(self, '_username', None) is None: self._username = self.auth.get_username() return self._username
  不知道读者是否还记得上面授权部分的代码。在login_check方法代码中,有这么一句。
  request.session['oauth_access_token'] = access_token
  授权用户的 access_token 已经存储在 session 变量中。因此,当用户授权完成后,我们可以直接使用session中存储的access_token,像这样:
  access_token = request.session.get('oauth_access_token', None) if access_token is not None: weibo_client = weibo() weibo_client.setToken(access_token.key, access_token.secret) weibo_client.update('全部完成~')
  在上面的例子中,只使用了部分 API。有关完整的 API 手册,请参阅此处。
  文章来源: 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(有时候整合新浪微博的独立博客是怎么做的??)
  随着新浪微博用户越来越多,我们有时会考虑将新浪微博整合到我们自己的网站中。例如,我目前的独立博客。
  我博客的整合主要是这几个方面:我写了一篇文章,同时发到微博。同时,用户可以用自己的微博账号登录,可以选择将文章的评论同步到文章的微博。此外,用户可以选择是否将博客消息同步到新浪微博。
  新浪微博开放平台地址在这里。文档地址在这里。
  首先要涉及的问题是用户使用新浪微博账号登录的问题,即授权机制。有两种基本方法:
  OAuth Basic auth(需要强调的是,微博开放平台将于6月1日正式停止支持Basic Auth,因此不讨论这种方式。实际上,要求用户名和密码的方式本质上是不安全的。)
  官方 OAuth 新浪文档在这里。想了解OAuth技术说明的可以访问项目主页。
  其实OAuth的过程还是很简单的。大致如下:
  从 API 调用中获取请求令牌。将用户重定向到授权页面(auth url)。用户输入用户名和密码完成授权。重定向到 Callback_url。将请求令牌交换到新浪微博以获取访问令牌。结束。
  大致了解了OAuth的原理后,既然是集成到Django,自然需要下载Python版的微博SDK。
  但是,在一切开始之前,您必须从新浪微博申请。申请地址在这里。这里需要强调的是,以后的应用需要申请审核,因为只有审核通过后,才能在源中显示个性化的应用名称。因此,在申请时,要注意申请介绍信息的完整性和正确的申请分类。(在这个例子中,我们的分类是合作网站。)
  申请完成后,您将获得您的申请的App Key和App Secret。
  回到授权用户登录的话题。要允许新浪微博账号访问,首先我们需要在urlpatterns中添加几个URL。如下:
  urlpatterns = patterns('projectname.appname.views', url(r'^log/$', 'login', name='log'), url(r'^logincheck/$', 'login_check', name='logcheck'), url(r'^logout/$', 'logout', name='logout'), )
  接下来,我们启动视图文件。代码:
  #!/usr/bin/env python # -*- coding: utf-8 -*- """ 基于django的新浪微博oauth views 需要django的session支持 """ from django.http import HttpResponseRedirect from weibopy.auth import OAuthHandler, WeibopError from weibopy import oauth consumer_key = '' # 设置你申请的appkey consumer_secret = '' # 设置你申请的appkey对于的secret class WebOAuthHandler(OAuthHandler): def get_authorization_url_with_callback(self, callback, signin_with_推ter=False): """Get the authorization URL to redirect the user""" try: # get the request token self.request_token = self._get_request_token() # build auth request and return as url if signin_with_推ter: url = self._get_oauth_url('authenticate') else: url = self._get_oauth_url('authorize') request = oauth.OAuthRequest.from_token_and_callback( token=self.request_token, callback=callback, http_url=url ) return request.to_url() except Exception, e: raise WeibopError(e) def _get_referer_url(request): referer_url = request.META.get('HTTP_REFERER', '/') host = request.META['HTTP_HOST'] if referer_url.startswith('http') and host not in referer_url: referer_url = '/' # 避免外站直接跳到登录页而发生跳转错误 return referer_url def _oauth(): """获取oauth认证类""" return WebOAuthHandler(consumer_key, consumer_secret) def login(request): # 保存最初的登录url,以便认证成功后跳转回来 back_to_url = _get_referer_url(request) request.session['login_back_to_url'] = back_to_url # 获取oauth认证url login_backurl = request.build_absolute_uri('/logincheck') auth_client = _oauth() auth_url = auth_client.get_authorization_url_with_callback(login_backurl) # 保存request_token,用户登录后需要使用它来获取access_token request.session['oauth_request_token'] = auth_client.request_token # 跳转到登录页面 return HttpResponseRedirect(auth_url) def login_check(request): """用户成功登录授权后,会回调此方法,获取access_token,完成授权""" # http://mk2.com/%3Foauth_token% ... 03896 verifier = request.GET.get('oauth_verifier', None) auth_client = _oauth() # 设置之前保存在session的request_token request_token = request.session['oauth_request_token'] del request.session['oauth_request_token'] auth_client.set_request_token(request_token.key, request_token.secret) access_token = auth_client.get_access_token(verifier) # 保存access_token,以后访问只需使用access_token即可 request.session['oauth_access_token'] = access_token # 跳转回最初登录前的页面 back_to_url = request.session.get('login_back_to_url', '/') return HttpResponseRedirect(back_to_url) def logout(request): """用户登出,直接删除access_token""" del request.session['oauth_access_token'] back_to_url = _get_referer_url(request) return HttpResponseRedirect(back_to_url)
  完成授权码后,接下来我们需要知道如何向新浪微博发送消息等操作。其实就是下载的sdk下exanples文件夹下的examples(没错,其实就是examples,这个是英文水平的,就不多说了)。基本上,您可以更改它并直接使用它。以oauthSetTokenUpdate.py为例,我们可以这样写:
  # -*- coding: utf-8 -*- from weibopy.auth import OAuthHandler from weibopy.api import API consumer_key= '应用的key' consumer_secret ='应用的App Secret' auth = OAuthHandler(consumer_key, consumer_secret) auth_url = auth.get_authorization_url() print 'Please authorize: ' + auth_url verifier = raw_input('PIN: ').strip() auth.get_access_token(verifier) api = API(auth) status = api.update_status(status='hello world', lat='12.3', long='45.6') # 注意status必须是UTF-8编码的字符串,经纬度是可以不写的 print status.id print status.text
  运行这个程序会提示一个URL链接,在浏览器中打开这个链接,并授予访问权限,你会得到一串PIN码。输入此 PIN 码,将发送一条推文,同时还会显示用户的访问令牌密钥和访问令牌秘密。
  但是,这是否有点太书呆子了?其实只要知道Access token key和Access token secret,我们就可以直接使用它们来创建API对象:
  # -*- coding: utf-8 -*- from weibopy.auth import OAuthHandler from weibopy.api import API consumer_key= '应用的key' consumer_secret ='应用的App Secret' token = '用户的Access token key' tokenSecret = '用户的Access token secret' auth = OAuthHandler(consumer_key, consumer_secret) auth.setToken(token, tokenSecret) api = API(auth) status = api.update_status(status='搞定收工~')
  这时候我们可以重构代码,写一个微博类来实现上述功能,实现一些api操作。
  class weibo(object): def __init__(self): self.consumer_key = consumer_key self.consumer_secret = consumer_secret def getAtt(self, key): try: return self.obj.__getattribute__(key) except Exception, e: print e return '' def getAttValue(self, obj, key): try: return obj.__getattribute__(key) except Exception, e: print e return '' def auth(self): self.auth = OAuthHandler(self.consumer_key, self.consumer_secret) auth_url = self.auth.get_authorization_url() print 'Please authorize: ' + auth_url verifier = raw_input('PIN: ').strip() self.auth.get_access_token(verifier) self.api = API(self.auth) def setToken(self, token, tokenSecret): self.auth = OAuthHandler(self.consumer_key, self.consumer_secret) self.auth.setToken(token, tokenSecret) self.api = API(self.auth) def update(self, message): message = message.encode("utf-8") status = self.api.update_status(status=message) self.obj = status id = self.getAtt("id") return id def destroy_status(self, id): status = self.api.destroy_status(id) self.obj = status id = self.getAtt("id") return id def comment(self, id, message): comment = self.api.comment(id=id, comment=message) self.obj = comment mid = self.getAtt("id") return mid def comment_destroy (self, mid): comment = self.api.comment_destroy(mid) self.obj = comment mid = self.getAtt("id") text = self.getAtt("text") return mid def repost(self, id, message): post = self.api.repost(id=id, status=message) self.obj = post mid = self.getAtt("id") return mid def get_username(self): if getattr(self, '_username', None) is None: self._username = self.auth.get_username() return self._username
  不知道读者是否还记得上面授权部分的代码。在login_check方法代码中,有这么一句。
  request.session['oauth_access_token'] = access_token
  授权用户的 access_token 已经存储在 session 变量中。因此,当用户授权完成后,我们可以直接使用session中存储的access_token,像这样:
  access_token = request.session.get('oauth_access_token', None) if access_token is not None: weibo_client = weibo() weibo_client.setToken(access_token.key, access_token.secret) weibo_client.update('全部完成~')
  在上面的例子中,只使用了部分 API。有关完整的 API 手册,请参阅此处。
  文章来源:

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博推出可嵌入到第三方网站的赞按钮(组图))

网站优化优采云 发表了文章 • 0 个评论 • 87 次浏览 • 2021-10-21 16:01 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博推出可嵌入到第三方网站的赞按钮(组图))
  【编者按】网站 正在建设中,还有一种方式分享。
  在网页版微博和手机客户端推出点赞按钮后,新浪微博现在有了一个可以嵌入第三方的点赞按钮网站。
  
  据新浪微博开放平台相关页面介绍,用户可以通过点赞按钮同时表达态度、发现朋友、分享内容。
  随时随地轻松表达态度——用户浏览网页,找到自己喜欢的内容,一键“赞”即可表达心情,方便快捷
  发现朋友——“喜欢”按钮也会显示表达过他们态度的用户。如果你的微博朋友也“点赞”了,那你就会看到她/他
  同步内容分享-----点击按钮后,用户将一条收录对象内容的动态消息同步到微博,并通过微博继续传播
  网站 开发人员现在可以将此按钮嵌入到他们自己的 网站 中。
  Like按钮最早出现在FriendFeed(Twitter的竞争对手,后来被Facebook收购)网站,然后被Facebook发扬光大,现在充斥着世界各个角落(中国除外)。我用 36 氪 文章 写了一篇文章,解释了 Like 按钮的强大:
  带有“赞”按钮网站 的媒体将其推荐流量平均增加了 300%。
  Levi's 于 2010 年 4 月添加了 Like 按钮,此后流量增长了 40 倍并保持稳定。
  添加“赞”按钮后,收入在 2 周内增长了 100%。
  添加赞按钮后,Tea 采集 的每日收入翻了 10 倍。
  但是,要实现这个效果,微博需要支持将用户喜欢的内容同步到时间线(目前只显示在自己的个人资料页面)。上次与新浪微博开放平台总经理楚大臣交流时,他透露未来会加入这个功能,但他们还在探索内容的呈现方式。Timeline 中出现的点赞内容非常有利于流量,但处理不当会对用户造成干扰。
  
  (个人资料页面点赞按钮的显示效果)
  除了新浪微博,QQ空间和人人网也早就推出了自己的点赞按钮。据说腾讯微博很早就在规划这个功能。
  对于微博来说,点赞按钮可以让他们采集大量的用户数据,这对于未来无论是用于投放精准广告还是对内容进行个性化推荐都将是非常有价值的。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博推出可嵌入到第三方网站的赞按钮(组图))
  【编者按】网站 正在建设中,还有一种方式分享。
  在网页版微博和手机客户端推出点赞按钮后,新浪微博现在有了一个可以嵌入第三方的点赞按钮网站。
  
  据新浪微博开放平台相关页面介绍,用户可以通过点赞按钮同时表达态度、发现朋友、分享内容。
  随时随地轻松表达态度——用户浏览网页,找到自己喜欢的内容,一键“赞”即可表达心情,方便快捷
  发现朋友——“喜欢”按钮也会显示表达过他们态度的用户。如果你的微博朋友也“点赞”了,那你就会看到她/他
  同步内容分享-----点击按钮后,用户将一条收录对象内容的动态消息同步到微博,并通过微博继续传播
  网站 开发人员现在可以将此按钮嵌入到他们自己的 网站 中。
  Like按钮最早出现在FriendFeed(Twitter的竞争对手,后来被Facebook收购)网站,然后被Facebook发扬光大,现在充斥着世界各个角落(中国除外)。我用 36 氪 文章 写了一篇文章,解释了 Like 按钮的强大:
  带有“赞”按钮网站 的媒体将其推荐流量平均增加了 300%。
  Levi's 于 2010 年 4 月添加了 Like 按钮,此后流量增长了 40 倍并保持稳定。
  添加“赞”按钮后,收入在 2 周内增长了 100%。
  添加赞按钮后,Tea 采集 的每日收入翻了 10 倍。
  但是,要实现这个效果,微博需要支持将用户喜欢的内容同步到时间线(目前只显示在自己的个人资料页面)。上次与新浪微博开放平台总经理楚大臣交流时,他透露未来会加入这个功能,但他们还在探索内容的呈现方式。Timeline 中出现的点赞内容非常有利于流量,但处理不当会对用户造成干扰。
  
  (个人资料页面点赞按钮的显示效果)
  除了新浪微博,QQ空间和人人网也早就推出了自己的点赞按钮。据说腾讯微博很早就在规划这个功能。
  对于微博来说,点赞按钮可以让他们采集大量的用户数据,这对于未来无论是用于投放精准广告还是对内容进行个性化推荐都将是非常有价值的。

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博V2版PHPSDKDemo使用教程版Demo演示地址)

网站优化优采云 发表了文章 • 0 个评论 • 72 次浏览 • 2021-10-21 02:17 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博V2版PHPSDKDemo使用教程版Demo演示地址)
  ==================
  用于新浪微博开放平台的PHP SDK。收录可以直接使用的DEMO。
  SAE(Sina App Engine,)内置SDK,无需下载,需要手动调用require_once('saetv2.ex.class.php');
  作曲家
  composer.phar 需要 xiaosier/libweibo:dev-master
  微博写界面说明
  由于微博开放平台的调整,写界面需要切换到分享分享界面,说明是%E3%80%90%E5%B9%B3%E5%8F%B0%E5 %85%AC%E5% 91%8A%E3%80%91%E5%BE%AE%E5%8D%9A%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F %B0%E5%88% 86%E4%BA%AB%E5%88%B0%E5%BE%AE%E5%8D%9A%E6%8E%A5%E5%8F%A3%E5%8D%87 %E7%BA%A7% E5%85%AC 在这里。您需要使用 $instance->share($status, $pic);调用时的方法,例如:
  share($status.'', ​​$file_local);var_dump($ret);">
  $c = new SaeTClientV2( WB_AKEY , WB_SKEY , WB_ACCESSTOKEN );
// 待发送的文字内容
$status = '发送的文字内容';
// 本地一张图片,也可以不带图片
$file_local = '5486087cly1fhh2yaksr1j20j60srtd0.jpg';
// 拼接'http://weibosdk.sinaapp.com/'是因为这个share接口至少要带上一个【安全域名】下的链接。
$ret = $c->share($status.'http://weibosdk.sinaapp.com/', $file_local);
var_dump($ret);
  更新说明
  Demo 演示地址
  如何申请API Key
  您需要有新浪微博开放平台的API Key。在此处申请:
  关于Class的功能
  新浪微博V2版PHPSDK Demo使用教程
  新浪微博应用Demo教程
  OAuth 版演示教程
  错误跟踪器
  有错误吗?请在 GitHub 上创建问题!
  作者授权 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博V2版PHPSDKDemo使用教程版Demo演示地址)
  ==================
  用于新浪微博开放平台的PHP SDK。收录可以直接使用的DEMO。
  SAE(Sina App Engine,)内置SDK,无需下载,需要手动调用require_once('saetv2.ex.class.php');
  作曲家
  composer.phar 需要 xiaosier/libweibo:dev-master
  微博写界面说明
  由于微博开放平台的调整,写界面需要切换到分享分享界面,说明是%E3%80%90%E5%B9%B3%E5%8F%B0%E5 %85%AC%E5% 91%8A%E3%80%91%E5%BE%AE%E5%8D%9A%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F %B0%E5%88% 86%E4%BA%AB%E5%88%B0%E5%BE%AE%E5%8D%9A%E6%8E%A5%E5%8F%A3%E5%8D%87 %E7%BA%A7% E5%85%AC 在这里。您需要使用 $instance->share($status, $pic);调用时的方法,例如:
  share($status.'', ​​$file_local);var_dump($ret);">
  $c = new SaeTClientV2( WB_AKEY , WB_SKEY , WB_ACCESSTOKEN );
// 待发送的文字内容
$status = '发送的文字内容';
// 本地一张图片,也可以不带图片
$file_local = '5486087cly1fhh2yaksr1j20j60srtd0.jpg';
// 拼接'http://weibosdk.sinaapp.com/'是因为这个share接口至少要带上一个【安全域名】下的链接。
$ret = $c->share($status.'http://weibosdk.sinaapp.com/', $file_local);
var_dump($ret);
  更新说明
  Demo 演示地址
  如何申请API Key
  您需要有新浪微博开放平台的API Key。在此处申请:
  关于Class的功能
  新浪微博V2版PHPSDK Demo使用教程
  新浪微博应用Demo教程
  OAuth 版演示教程
  错误跟踪器
  有错误吗?请在 GitHub 上创建问题!
  作者授权

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博新的API授权方式为OAuth2以往的BasicAuth(图))

网站优化优采云 发表了文章 • 0 个评论 • 91 次浏览 • 2021-10-19 11:09 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博新的API授权方式为OAuth2以往的BasicAuth(图))
  1、注册新浪账号2、开发者认证
  我需要认证,我等了一天。提交身份认证后即可使用,无需等待认证通过。
  3、创建APP
  系统会为此应用分配一个APP KEY和APP SECRET。这两个字符串非常重要,将在以后的身份验证或信息交换中使用。
  4、设置应用授权回调页面
  应用信息-高级信息-OAuth2.0 授权设置,设置授权回调页面。
  如果没有自己的网站,可以设置redirecturl为,程序中的redirecturl要和这个一致。
  如图所示:
  
  如果没有设置授权回调页面地址,或者程序与此不同,会出现如下错误:
  访问出错了!
你所访问的站点在新浪微博的认证失败,请你联系gnocob或者稍后再试。
(error:redirect_uri_mismatch)
  如图所示:
  
  5、下载所需版本的sdk
  6、查看可用的 API
  %E6%96%87%E6%A1%A3
  可用于我的应用程序的接口:
  
  7、测试及其他
  Python SDK 调用 API 测试如下:
  #encoding=utf-8
from weibo import APIClient
def get_access_token(app_key, app_secret, callback_url):
client = APIClient(app_key=app_key, app_secret=app_secret, redirect_uri=callback_url)
# 获取授权页面网址
auth_url = client.get_authorize_url()
print auth_url

# 在浏览器中访问这个URL,会跳转到回调地址,回调地址后面跟着code,输入code
code = raw_input("Input code:")
r = client.request_access_token(code)
access_token = r.access_token
# token过期的UNIX时间
expires_in = r.expires_in
print 'access_token:',access_token
print 'expires_in:', expires_in
return access_token, expires_in
if __name__ == '__main__':
app_key = '1234567'
app_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
callback_url = 'https://api.weibo.com/oauth2/default.html'
access_token, expires_in = get_access_token(app_key, app_secret, callback_url)
# 上面的语句运行一次后,可保存得到的access token,不必每次都申请
#access_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
#expires_in = '00000000'
client = APIClient(app_key=app_key, app_secret=app_secret, redirect_uri=callback_url)
client.set_access_token(access_token, expires_in)
# 使用获得的OAuth2.0 Access Token调用API
print client.get.statuses__user_timeline()
print client.post.statuses__update(status=u'测试OAuth 2.0发微博')
  OAuth 认证方式:
  得到auth_url后,长这样:
  %3A//oauth2/default.html&response_type=code&client_id=180341588&display=default,
  用浏览器打开,会跳转到授权回调页面地址,像这样:
  ,
  获取后面的code值,申请access_token。成功后即可获得访问权限。
  注意新浪微博新的API授权方式是OAuth2,与之前的Basic Auth不同。详细参考:
  如何使用OAuth2以及如何使用API​​,请参考:
  如果在使用过程中出现问题,在google或者官方论坛搜索提示信息, 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博新的API授权方式为OAuth2以往的BasicAuth(图))
  1、注册新浪账号2、开发者认证
  我需要认证,我等了一天。提交身份认证后即可使用,无需等待认证通过。
  3、创建APP
  系统会为此应用分配一个APP KEY和APP SECRET。这两个字符串非常重要,将在以后的身份验证或信息交换中使用。
  4、设置应用授权回调页面
  应用信息-高级信息-OAuth2.0 授权设置,设置授权回调页面。
  如果没有自己的网站,可以设置redirecturl为,程序中的redirecturl要和这个一致。
  如图所示:
  
  如果没有设置授权回调页面地址,或者程序与此不同,会出现如下错误:
  访问出错了!
你所访问的站点在新浪微博的认证失败,请你联系gnocob或者稍后再试。
(error:redirect_uri_mismatch)
  如图所示:
  
  5、下载所需版本的sdk
  6、查看可用的 API
  %E6%96%87%E6%A1%A3
  可用于我的应用程序的接口:
  
  7、测试及其他
  Python SDK 调用 API 测试如下:
  #encoding=utf-8
from weibo import APIClient
def get_access_token(app_key, app_secret, callback_url):
client = APIClient(app_key=app_key, app_secret=app_secret, redirect_uri=callback_url)
# 获取授权页面网址
auth_url = client.get_authorize_url()
print auth_url

# 在浏览器中访问这个URL,会跳转到回调地址,回调地址后面跟着code,输入code
code = raw_input("Input code:")
r = client.request_access_token(code)
access_token = r.access_token
# token过期的UNIX时间
expires_in = r.expires_in
print 'access_token:',access_token
print 'expires_in:', expires_in
return access_token, expires_in
if __name__ == '__main__':
app_key = '1234567'
app_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
callback_url = 'https://api.weibo.com/oauth2/default.html'
access_token, expires_in = get_access_token(app_key, app_secret, callback_url)
# 上面的语句运行一次后,可保存得到的access token,不必每次都申请
#access_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
#expires_in = '00000000'
client = APIClient(app_key=app_key, app_secret=app_secret, redirect_uri=callback_url)
client.set_access_token(access_token, expires_in)
# 使用获得的OAuth2.0 Access Token调用API
print client.get.statuses__user_timeline()
print client.post.statuses__update(status=u'测试OAuth 2.0发微博')
  OAuth 认证方式:
  得到auth_url后,长这样:
  %3A//oauth2/default.html&response_type=code&client_id=180341588&display=default,
  用浏览器打开,会跳转到授权回调页面地址,像这样:
  ,
  获取后面的code值,申请access_token。成功后即可获得访问权限。
  注意新浪微博新的API授权方式是OAuth2,与之前的Basic Auth不同。详细参考:
  如何使用OAuth2以及如何使用API​​,请参考:
  如果在使用过程中出现问题,在google或者官方论坛搜索提示信息,

使用新浪微博开放平台api同步微博内容至自己网站(新浪云平台(SinaAppEngine)开放的是什么:Sina)

网站优化优采云 发表了文章 • 0 个评论 • 85 次浏览 • 2021-11-01 23:17 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪云平台(SinaAppEngine)开放的是什么:Sina)
  1、新浪微博开放平台()
  什么是开放的:开放平台对开发者开放的是每个用户的用户关系。开发者不像传统应用那样面对单个开发者,而是面对用户背后的整个朋友圈。每个API都提供了围绕好友与好友交流的相关功能,如发送微博、查看好友信息等。
  为什么要使用开放平台?一个开放的平台可以加快应用的推广。每个用户都可以影响周围的朋友。一旦应用程序真的很好,用户可以很容易地推荐给他的朋友,朋友可以再次推荐给他的朋友。开放的平台,更容易获得用户关系。当一个应用涉及到用户沟通时,它需要同时拥有一定的用户群和用户关系链,与如此多的用户建立关系链需要花费大量的时间和精力。微博通过草根与草根、草根与名人、名人与名人的相互关注,形成了庞大的社交网络,应用程序可以通过开放平台直接使用这个网络。
  2、新浪云平台(Sina AppEngine、SAE)
  新浪App Engine(以下简称SAE)是新浪研发中心于2009年8月开始内部开发并于2009年11月3日正式推出首个Alpha版本的国内首个公有云计算平台。SAE是新浪云的核心组件计算策略。
  SAE作为国内的公有云计算公司,从发展之初就借鉴了谷歌、亚马逊等国外公司在公有云计算方面的成功技术经验,并很快推出了与众不同的具有自身特色的云计算平台。SAE 选择中国最流行的 Web 开发语言 PHP 作为首选支持语言。Web 开发者可以使用 SVN、SDK 或 Web 版本的在线代码编辑器在 Linux/Mac/Windows 上进行开发、部署和调试。团队开发成员也可以协作,不同角色对代码和项目有不同的权限;SAE 提供了一系列分布式计算和存储服务供开发者使用,包括分布式文件存储、分布式数据库集群、分布式缓存、分布式定时服务等,这些服务将大大降低开发者的开发成本。同时,由于SAE整体架构的高可靠性和新浪的品牌保证,大大降低了开发商的运营风险。另外,作为典型的云计算,SAE采用了“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。作为典型的云计算,SAE采用“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。作为典型的云计算,SAE采用“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。
  简而言之,SAE 是一个简单高效的分布式 Web 服务开发和运营平台。
  查看更多。
  3、新浪云平台(Sina AppEngine, SAE)与新浪微博开放平台的关系
  微博应用开发成功后,需要将代码部署到Web上才能使用。也就是说,微博应用开发是通过调用新浪微博开放平台中的API来完成编程的,这些程序必须上传到SAE并在SAE上运行。
  在开发过程中,您可以搭建一个web服务器在本地运行程序,也可以选择完成传统的服务托管。但是,这两种方案都需要很多麻烦的配置。
  开发时直接将代码部署到SAE,无需任何配置,SAE为您准备了更多以后可能用到的服务。我们可以直接进入话题开发微博应用。
  SAE 是免费的(至少作为个人学习的资源),这也很重要。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪云平台(SinaAppEngine)开放的是什么:Sina)
  1、新浪微博开放平台()
  什么是开放的:开放平台对开发者开放的是每个用户的用户关系。开发者不像传统应用那样面对单个开发者,而是面对用户背后的整个朋友圈。每个API都提供了围绕好友与好友交流的相关功能,如发送微博、查看好友信息等。
  为什么要使用开放平台?一个开放的平台可以加快应用的推广。每个用户都可以影响周围的朋友。一旦应用程序真的很好,用户可以很容易地推荐给他的朋友,朋友可以再次推荐给他的朋友。开放的平台,更容易获得用户关系。当一个应用涉及到用户沟通时,它需要同时拥有一定的用户群和用户关系链,与如此多的用户建立关系链需要花费大量的时间和精力。微博通过草根与草根、草根与名人、名人与名人的相互关注,形成了庞大的社交网络,应用程序可以通过开放平台直接使用这个网络。
  2、新浪云平台(Sina AppEngine、SAE)
  新浪App Engine(以下简称SAE)是新浪研发中心于2009年8月开始内部开发并于2009年11月3日正式推出首个Alpha版本的国内首个公有云计算平台。SAE是新浪云的核心组件计算策略。
  SAE作为国内的公有云计算公司,从发展之初就借鉴了谷歌、亚马逊等国外公司在公有云计算方面的成功技术经验,并很快推出了与众不同的具有自身特色的云计算平台。SAE 选择中国最流行的 Web 开发语言 PHP 作为首选支持语言。Web 开发者可以使用 SVN、SDK 或 Web 版本的在线代码编辑器在 Linux/Mac/Windows 上进行开发、部署和调试。团队开发成员也可以协作,不同角色对代码和项目有不同的权限;SAE 提供了一系列分布式计算和存储服务供开发者使用,包括分布式文件存储、分布式数据库集群、分布式缓存、分布式定时服务等,这些服务将大大降低开发者的开发成本。同时,由于SAE整体架构的高可靠性和新浪的品牌保证,大大降低了开发商的运营风险。另外,作为典型的云计算,SAE采用了“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。作为典型的云计算,SAE采用“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。作为典型的云计算,SAE采用“所付即付,所付即用”的计费理念。它通过日志和统计中心准确计算每个应用程序的资源消耗(包括CPU、内存、磁盘等)。
  简而言之,SAE 是一个简单高效的分布式 Web 服务开发和运营平台。
  查看更多。
  3、新浪云平台(Sina AppEngine, SAE)与新浪微博开放平台的关系
  微博应用开发成功后,需要将代码部署到Web上才能使用。也就是说,微博应用开发是通过调用新浪微博开放平台中的API来完成编程的,这些程序必须上传到SAE并在SAE上运行。
  在开发过程中,您可以搭建一个web服务器在本地运行程序,也可以选择完成传统的服务托管。但是,这两种方案都需要很多麻烦的配置。
  开发时直接将代码部署到SAE,无需任何配置,SAE为您准备了更多以后可能用到的服务。我们可以直接进入话题开发微博应用。
  SAE 是免费的(至少作为个人学习的资源),这也很重要。

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博短链接API开放,腾讯微博短地址API没有开放)

网站优化优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2021-11-01 20:10 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博短链接API开放,腾讯微博短地址API没有开放)
  在短地址(又称短链接、短地址等)方面,推特是经过发展后发展起来的,很多互联网网站都使用短地址。国内外有很多,但稳定可靠。国内的比较靠谱。我不怕没有墙。几家外国公司已经遭遇悲剧。所以,如果在项目中使用短地址,我还是推荐使用新浪或者其他国内的短链接服务。
  新浪微博短链接API开放,但腾讯微博短地址API未开放。我想通过不同的路径获取腾讯微博的API,但以失败告终。新浪微博短地址API不需要用户登录,直接调用即可,速度非常快。以下代码取自网站,使用CURLPOST方法供参考。
  新浪微博短链接API文档在老版本的开发文档中,但新版本没有添加:
  function shortenSinaUrl($long_url){
$apiKey='1234567890';//这里是你申请的应用的API KEY,随便写个应用名就会自动分配给你
$apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $apiUrl);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
curl_close($curlObj);
$json = json_decode($response);
return $json[0]->url_short;
}
function expandSinaUrl($short_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $apiUrl);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
curl_close($curlObj);
$json = json_decode($response);
return $json[0]->url_long;
}
  参考新浪微博的开发文档,推荐使用get方式获取。代码更简单
  function shorturl($long_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url;
$response = file_get_contents($apiUrl);
$json = json_decode($response);
return $json[0]->url_short;
}
function expandurl($short_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url;
$response = file_get_contents($apiUrl);
$json = json_decode($response);
return $json[0]->url_long;
}
  好,容易吗?
  调试上面代码的时候,需要填写自己的API key,不然肯定拿不到。
  特别说明:短地址服务现在只为经过认证的APP KEY提供服务,刚刚申请的APP KEY会提示没有权限。可以使用209678993和3818214747这两个KEY进行测试。这两个KEY的来源不明,不推荐用于生产。(感谢您的提醒)
  Jucelin 写了一个调试文档,你可以测试一下:
  长到短:://
  短到长::///S4bLBm
  参数只有2个,类型:1表示长转短,2表示短转长,后面的URL是目标域名,因为懒所以没有错误判断,新浪微博短地址不支持短地址和那么短地址是的,逻辑上应该是这样控制的。(不信你可以试试)。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博短链接API开放,腾讯微博短地址API没有开放)
  在短地址(又称短链接、短地址等)方面,推特是经过发展后发展起来的,很多互联网网站都使用短地址。国内外有很多,但稳定可靠。国内的比较靠谱。我不怕没有墙。几家外国公司已经遭遇悲剧。所以,如果在项目中使用短地址,我还是推荐使用新浪或者其他国内的短链接服务。
  新浪微博短链接API开放,但腾讯微博短地址API未开放。我想通过不同的路径获取腾讯微博的API,但以失败告终。新浪微博短地址API不需要用户登录,直接调用即可,速度非常快。以下代码取自网站,使用CURLPOST方法供参考。
  新浪微博短链接API文档在老版本的开发文档中,但新版本没有添加:
  function shortenSinaUrl($long_url){
$apiKey='1234567890';//这里是你申请的应用的API KEY,随便写个应用名就会自动分配给你
$apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $apiUrl);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
curl_close($curlObj);
$json = json_decode($response);
return $json[0]->url_short;
}
function expandSinaUrl($short_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $apiUrl);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
curl_close($curlObj);
$json = json_decode($response);
return $json[0]->url_long;
}
  参考新浪微博的开发文档,推荐使用get方式获取。代码更简单
  function shorturl($long_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url;
$response = file_get_contents($apiUrl);
$json = json_decode($response);
return $json[0]->url_short;
}
function expandurl($short_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url;
$response = file_get_contents($apiUrl);
$json = json_decode($response);
return $json[0]->url_long;
}
  好,容易吗?
  调试上面代码的时候,需要填写自己的API key,不然肯定拿不到。
  特别说明:短地址服务现在只为经过认证的APP KEY提供服务,刚刚申请的APP KEY会提示没有权限。可以使用209678993和3818214747这两个KEY进行测试。这两个KEY的来源不明,不推荐用于生产。(感谢您的提醒)
  Jucelin 写了一个调试文档,你可以测试一下:
  长到短:://
  短到长::///S4bLBm
  参数只有2个,类型:1表示长转短,2表示短转长,后面的URL是目标域名,因为懒所以没有错误判断,新浪微博短地址不支持短地址和那么短地址是的,逻辑上应该是这样控制的。(不信你可以试试)。

使用新浪微博开放平台api同步微博内容至自己网站(weibo.sdk.android--这个是sina微博微博登陆认证的源码)

网站优化优采云 发表了文章 • 0 个评论 • 128 次浏览 • 2021-11-01 20:07 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(weibo.sdk.android--这个是sina微博微博登陆认证的源码)
  首先要告诉大家的是,新浪微博API项目已经转移到GitHub上,原来的Google Code()项目没有更新。如果使用旧代码运行登录,会弹出网页错误bug。最新地址在:
  界面也从之前的V1转为V2。具体信息请参考:。但是如果你像我一样从头开始,不用担心,直接去github下载最新的SDK即可。
  下载源代码后解压:
  
  哎,本来不想关心各个文件夹在干什么的……不过想起博客的格言……还是有问题,别偷懒,想问题……
  weibo.sdk.android ---- 这是新浪微博登录认证的源码。它是一个 Android Lib 项目。什么是ALP这里就不解释了。同学们可以参考链接( )。
  weibo.sdk.android.api ---- 这是新浪微博交互界面的源码,是一个ALP。
  weibo.sdk.androi.sso ---- 这是新浪微薄的SSO源码。如果不了解SSO,请看百度百科:
  weibo.sdk.android.sso.demo ---- 最后一个是我们需要的Demo,我们可以在Eclipse中引入这个项目。
  凌乱的 Doc ---- 我猜它是在 linux 下写的还是什么?无论如何,这是技术文档。新浪真是懒得开发。本文档中的某些内容不再有效,例如 Android 权限声明。无论如何,请随意看看。
  weibo.sdk.android.sso.jar ---- 这是你需要引入到自己项目中的jar包。
  在这个文章中,我们不谈其他,只谈调用sina接口进行登录认证,其余功能请参考官方Demo。
  首先,我们创建一个Android项目,命名为LoginTest
  创建布局文件:
  创建活动并在其中放置一个按钮。点击按钮后,会弹出新浪认证窗口。认证成功后,界面上会显示认证文本。
  package com.example.logintest;
import java.text.SimpleDateFormat;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.Weibo;
import com.weibo.sdk.android.WeiboAuthListener;
import com.weibo.sdk.android.WeiboDialogError;
import com.weibo.sdk.android.WeiboException;
public class MainActivity extends Activity {
private Weibo mWeibo;
private static final String CONSUMER_KEY = "966056985";// 替换为开发者的appkey,例如"1646212860";
private static final String REDIRECT_URL = "http://www.sina.com";
public static Oauth2AccessToken accessToken;
private TextView mText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL);
Button btn = (Button) findViewById(R.id.button1);
mText = (TextView) findViewById(R.id.textView1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mWeibo.authorize(MainActivity.this, new AuthDialogListener());
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class AuthDialogListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
MainActivity.accessToken = new Oauth2AccessToken(token, expires_in);
if (MainActivity.accessToken.isSessionValid()) {
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
.format(new java.util.Date(MainActivity.accessToken
.getExpiresTime()));
mText.setText("认证成功: \r\n access_token: " + token + "\r\n"
+ "expires_in: " + expires_in + "\r\n有效期:" + date);
try {
Class sso = Class
.forName("com.weibo.sdk.android.api.WeiboAPI");// 如果支持weiboapi的话,显示api功能演示入口按钮
} catch (ClassNotFoundException e) {
// e.printStackTrace();
Log.i("H3c", "com.weibo.sdk.android.api.WeiboAPI not found");
}
AccessTokenKeeper.keepAccessToken(MainActivity.this,
accessToken);
Toast.makeText(MainActivity.this, "认证成功", Toast.LENGTH_SHORT)
.show();
}
}
@Override
public void onError(WeiboDialogError e) {
Toast.makeText(getApplicationContext(),
"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "Auth cancel",
Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(getApplicationContext(),
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
}
  将使用 AccessTokenKeeper 对象。该对象用于存储认证信息。可以从Demo中获取,直接复制粘贴即可。
  最后,添加权限(那一团糟的描述。doc 有点错误):
  
  
  啊,就是这样。
  一开始,我在纠结那个新浪APP_KEY,也就是应用中的CONSUMER_KEY。我认为要获得APPKEY,我必须上传工作,但现在我还没有做到。如何上传?这是一个鸡和蛋的Bug。后来想太多了!APPKEY的作用应该是在认证登录时弹出的登录框中显示你的应用名称。比如Demo中显示的是“新浪在你的掌中”。我们在开发应用等的时候可以参考demo先做功能,等所有功能完成后,上传APP获取APPKEY,然后替换。
  这篇文章纯粹是我今天的初步研究所写的。如有不对之处,请指出!
  最后附上新浪微薄的API:%E5%B9%B3%E5%8F%B0%E6%A6%82%E8%BF%B0 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(weibo.sdk.android--这个是sina微博微博登陆认证的源码)
  首先要告诉大家的是,新浪微博API项目已经转移到GitHub上,原来的Google Code()项目没有更新。如果使用旧代码运行登录,会弹出网页错误bug。最新地址在:
  界面也从之前的V1转为V2。具体信息请参考:。但是如果你像我一样从头开始,不用担心,直接去github下载最新的SDK即可。
  下载源代码后解压:
  
  哎,本来不想关心各个文件夹在干什么的……不过想起博客的格言……还是有问题,别偷懒,想问题……
  weibo.sdk.android ---- 这是新浪微博登录认证的源码。它是一个 Android Lib 项目。什么是ALP这里就不解释了。同学们可以参考链接( )。
  weibo.sdk.android.api ---- 这是新浪微博交互界面的源码,是一个ALP。
  weibo.sdk.androi.sso ---- 这是新浪微薄的SSO源码。如果不了解SSO,请看百度百科:
  weibo.sdk.android.sso.demo ---- 最后一个是我们需要的Demo,我们可以在Eclipse中引入这个项目。
  凌乱的 Doc ---- 我猜它是在 linux 下写的还是什么?无论如何,这是技术文档。新浪真是懒得开发。本文档中的某些内容不再有效,例如 Android 权限声明。无论如何,请随意看看。
  weibo.sdk.android.sso.jar ---- 这是你需要引入到自己项目中的jar包。
  在这个文章中,我们不谈其他,只谈调用sina接口进行登录认证,其余功能请参考官方Demo。
  首先,我们创建一个Android项目,命名为LoginTest
  创建布局文件:
  创建活动并在其中放置一个按钮。点击按钮后,会弹出新浪认证窗口。认证成功后,界面上会显示认证文本。
  package com.example.logintest;
import java.text.SimpleDateFormat;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.Weibo;
import com.weibo.sdk.android.WeiboAuthListener;
import com.weibo.sdk.android.WeiboDialogError;
import com.weibo.sdk.android.WeiboException;
public class MainActivity extends Activity {
private Weibo mWeibo;
private static final String CONSUMER_KEY = "966056985";// 替换为开发者的appkey,例如"1646212860";
private static final String REDIRECT_URL = "http://www.sina.com";
public static Oauth2AccessToken accessToken;
private TextView mText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL);
Button btn = (Button) findViewById(R.id.button1);
mText = (TextView) findViewById(R.id.textView1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mWeibo.authorize(MainActivity.this, new AuthDialogListener());
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class AuthDialogListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
MainActivity.accessToken = new Oauth2AccessToken(token, expires_in);
if (MainActivity.accessToken.isSessionValid()) {
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
.format(new java.util.Date(MainActivity.accessToken
.getExpiresTime()));
mText.setText("认证成功: \r\n access_token: " + token + "\r\n"
+ "expires_in: " + expires_in + "\r\n有效期:" + date);
try {
Class sso = Class
.forName("com.weibo.sdk.android.api.WeiboAPI");// 如果支持weiboapi的话,显示api功能演示入口按钮
} catch (ClassNotFoundException e) {
// e.printStackTrace();
Log.i("H3c", "com.weibo.sdk.android.api.WeiboAPI not found");
}
AccessTokenKeeper.keepAccessToken(MainActivity.this,
accessToken);
Toast.makeText(MainActivity.this, "认证成功", Toast.LENGTH_SHORT)
.show();
}
}
@Override
public void onError(WeiboDialogError e) {
Toast.makeText(getApplicationContext(),
"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "Auth cancel",
Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(getApplicationContext(),
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
}
  将使用 AccessTokenKeeper 对象。该对象用于存储认证信息。可以从Demo中获取,直接复制粘贴即可。
  最后,添加权限(那一团糟的描述。doc 有点错误):
  
  
  啊,就是这样。
  一开始,我在纠结那个新浪APP_KEY,也就是应用中的CONSUMER_KEY。我认为要获得APPKEY,我必须上传工作,但现在我还没有做到。如何上传?这是一个鸡和蛋的Bug。后来想太多了!APPKEY的作用应该是在认证登录时弹出的登录框中显示你的应用名称。比如Demo中显示的是“新浪在你的掌中”。我们在开发应用等的时候可以参考demo先做功能,等所有功能完成后,上传APP获取APPKEY,然后替换。
  这篇文章纯粹是我今天的初步研究所写的。如有不对之处,请指出!
  最后附上新浪微薄的API:%E5%B9%B3%E5%8F%B0%E6%A6%82%E8%BF%B0

使用新浪微博开放平台api同步微博内容至自己网站(8款国外开源微博,搭建自己的微博轻松又简单)

网站优化优采云 发表了文章 • 0 个评论 • 78 次浏览 • 2021-10-30 09:21 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(8款国外开源微博,搭建自己的微博轻松又简单)
  文章标签文章分类 MySQL 数据库
  ©版权归作者所有:原创 作品来自51CTO博主朗基江湖。如需转载请注明出处,否则将追究法律责任
  轻松打造自己的“推特”微博平台!开源程序是免费的
  当推特风靡全球,新浪微博主导的群博时代爆发时,几乎所有的SNS产品都采用微博作为标准配置。你也喜欢建立自己的微博吗?
  自己开发微博产品并不容易,但在分享精神遍及全球互联网领域的今天,其中的秘诀是什么?自己建立一个虚假的“推特”微博。从网上搜集了十个开源微博程序,手握这些开源代码,搭建自己的微博轻而易举。
  如果你也有好的微博开源程序,请给我留言。IT人的精神是:分享!
  先介绍两条中文开源微博:
  易话
  接口与饭否类似,API接口与饭否相似。基于PHP和MySQL,点击这里下载源代码。
  网页烹饪
  基于PHP和MySQL,支持与机外同步,点此下载源代码。
  以下是8条国外开源微博:
  斋库
  Jaiku(演示地址)是一个基于Python的微博平台。2007年被谷歌收购,之后并未成功运营。不得不在 2009 年宣布暂停维护。 后来,Google 将 Jaiku 完全开源并进行了切换。在 AppEngine 上运行。Jaiku 目前是完全开源的,可供用户免费下载。可以到Jaiku源代码项目地址,使用SVN工具下载其源代码。
  Laconica/ StatusNet
  Laconica/StatusNet(演示地址)是一个基于PHP和MySQL的开源微博系统。也是可以实现微博常用功能的推特克隆版。国外很多微博系统都是通过这个开源系统搭建的。Laconica 得到了大量应用系统的支持,包括 Twitterfeed、Hellotxt 和 Gravity,它们已经成熟稳定。单击此处下载其源代码。
  永克利
  Yonkly 是一个基于 Asp.Net 的开源微博。除了开源版本,它还拥有高级的独立托管版本。
  弗洛波
  Floopo是一个基于PHP和MySQL的免费微博系统。它的功能与推特非常相似,并提供了强大的后台管理系统。
  更甜
  Sweetter是一个基于Python的具有一定投票机制的开源微博项目,点击这里下载其源代码。
  吉斯科
  Jisko 的界面与 Twitter 非常相似。它可以通过 AJAX 自动更新。它还基于 PHP 和 MySQL。这个系统可能是由西班牙人开发的。使用 SVN 在此处下载其源代码。
  P2 WordPress 主题
  Wordpress 主题的P2(PHP)是一个WordPress Twitter 主题,可以将您的WordPress 博客转换为类似Twitter 的微博系统。支持实时更新,发布的信息和评论无需刷新即可显示。
  这十个开源微薄中的一个永远适合你。凡夫,推特对你来说不再是个谜。
  上一篇:真正“彻底”将火狐(Maxthon)设置为默认浏览器 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(8款国外开源微博,搭建自己的微博轻松又简单)
  文章标签文章分类 MySQL 数据库
  ©版权归作者所有:原创 作品来自51CTO博主朗基江湖。如需转载请注明出处,否则将追究法律责任
  轻松打造自己的“推特”微博平台!开源程序是免费的
  当推特风靡全球,新浪微博主导的群博时代爆发时,几乎所有的SNS产品都采用微博作为标准配置。你也喜欢建立自己的微博吗?
  自己开发微博产品并不容易,但在分享精神遍及全球互联网领域的今天,其中的秘诀是什么?自己建立一个虚假的“推特”微博。从网上搜集了十个开源微博程序,手握这些开源代码,搭建自己的微博轻而易举。
  如果你也有好的微博开源程序,请给我留言。IT人的精神是:分享!
  先介绍两条中文开源微博:
  易话
  接口与饭否类似,API接口与饭否相似。基于PHP和MySQL,点击这里下载源代码。
  网页烹饪
  基于PHP和MySQL,支持与机外同步,点此下载源代码。
  以下是8条国外开源微博:
  斋库
  Jaiku(演示地址)是一个基于Python的微博平台。2007年被谷歌收购,之后并未成功运营。不得不在 2009 年宣布暂停维护。 后来,Google 将 Jaiku 完全开源并进行了切换。在 AppEngine 上运行。Jaiku 目前是完全开源的,可供用户免费下载。可以到Jaiku源代码项目地址,使用SVN工具下载其源代码。
  Laconica/ StatusNet
  Laconica/StatusNet(演示地址)是一个基于PHP和MySQL的开源微博系统。也是可以实现微博常用功能的推特克隆版。国外很多微博系统都是通过这个开源系统搭建的。Laconica 得到了大量应用系统的支持,包括 Twitterfeed、Hellotxt 和 Gravity,它们已经成熟稳定。单击此处下载其源代码。
  永克利
  Yonkly 是一个基于 Asp.Net 的开源微博。除了开源版本,它还拥有高级的独立托管版本。
  弗洛波
  Floopo是一个基于PHP和MySQL的免费微博系统。它的功能与推特非常相似,并提供了强大的后台管理系统。
  更甜
  Sweetter是一个基于Python的具有一定投票机制的开源微博项目,点击这里下载其源代码。
  吉斯科
  Jisko 的界面与 Twitter 非常相似。它可以通过 AJAX 自动更新。它还基于 PHP 和 MySQL。这个系统可能是由西班牙人开发的。使用 SVN 在此处下载其源代码。
  P2 WordPress 主题
  Wordpress 主题的P2(PHP)是一个WordPress Twitter 主题,可以将您的WordPress 博客转换为类似Twitter 的微博系统。支持实时更新,发布的信息和评论无需刷新即可显示。
  这十个开源微薄中的一个永远适合你。凡夫,推特对你来说不再是个谜。
  上一篇:真正“彻底”将火狐(Maxthon)设置为默认浏览器

使用新浪微博开放平台api同步微博内容至自己网站(使用API提交数据(发布一条微博信息)(组图))

网站优化优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2021-10-29 18:02 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(使用API提交数据(发布一条微博信息)(组图))
  我也是新手,第一次使用开放平台进行开发。一开始我觉得无处可去。经过长时间的摸索,终于成功调用了API。现在我把这个经验介绍给新手(高手不用看,当然,如果你能提出一些意见和建议,我非常感谢),我想和你交流。
  本例介绍如何使用API​​提交数据(发微博)和使用API​​获取数据(获取最新更新的20条公众微博消息),即官方中的“获取下行数据集(时间线)接口” “微博访问接口”下的“Statuses/public_timeline获取最新更新的公众微博新闻”和“Statuses/update发布微博信息”API。
  首先,你必须有一个新浪微博账号,并申请一个app key(详情请参考%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97)@ >,然后在VS中新建一个解决方案,在解决方案中添加一个类库和一个网站,并添加一个引用(网站引用类库)。
  
  由于发布微博是POST请求,获取数据是GET请求,并且通过HTTP基本认证(Basic Authentication)授权,我把这些函数写在一个类中(在类库中),代码如下(该类参考我没有仔细考虑是否达到了普遍性):
  
  发送请求和授权码
  然后在类库中创建两个实体类status和user,字段与官方API相同:
  
  状态实体类
  
  用户实体类
  好了,经过上面的步骤,准备工作就完成了,现在可以调用API了,我们来看看发布一条微博消息。虽然在这个文章()中有介绍,但为了本文的完整性,我还是把它贴出来。我的代码,在类库中添加了一个微博访问类MiniBlogVisit类:
  
  微博访问
  您可以通过调用 update 方法发布微博。但是需要注意的是,这里的Content必须使用HttpUtility.UrlEncode进行编码,否则会出现乱码。
  看20条已更新的公众微博消息,为最新更新,这是官方API中的第一个接口。这里返回的是 XML 数据或 JSON 数据。您可以根据自己的喜好自由选择。我选择返回 XML 数据。我的方法是将返回的XML数据写入XML文件,然后解析XML文件。代码如下:
  
  获取数据代码
  好的,现在它被调用了。调用比较简单,就是一个空的Default.aspx页面。后台代码如下:
  
  呼叫代码
  至此,所有的代码都写完了,我们来看一下完整的解决方案:
  
  运行后效果如下:
  
  第一次调用API,也是第一次写这么长的文章。欢迎大家多拍几张!!! 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(使用API提交数据(发布一条微博信息)(组图))
  我也是新手,第一次使用开放平台进行开发。一开始我觉得无处可去。经过长时间的摸索,终于成功调用了API。现在我把这个经验介绍给新手(高手不用看,当然,如果你能提出一些意见和建议,我非常感谢),我想和你交流。
  本例介绍如何使用API​​提交数据(发微博)和使用API​​获取数据(获取最新更新的20条公众微博消息),即官方中的“获取下行数据集(时间线)接口” “微博访问接口”下的“Statuses/public_timeline获取最新更新的公众微博新闻”和“Statuses/update发布微博信息”API。
  首先,你必须有一个新浪微博账号,并申请一个app key(详情请参考%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97)@ >,然后在VS中新建一个解决方案,在解决方案中添加一个类库和一个网站,并添加一个引用(网站引用类库)。
  
  由于发布微博是POST请求,获取数据是GET请求,并且通过HTTP基本认证(Basic Authentication)授权,我把这些函数写在一个类中(在类库中),代码如下(该类参考我没有仔细考虑是否达到了普遍性):
  
  发送请求和授权码
  然后在类库中创建两个实体类status和user,字段与官方API相同:
  
  状态实体类
  
  用户实体类
  好了,经过上面的步骤,准备工作就完成了,现在可以调用API了,我们来看看发布一条微博消息。虽然在这个文章()中有介绍,但为了本文的完整性,我还是把它贴出来。我的代码,在类库中添加了一个微博访问类MiniBlogVisit类:
  
  微博访问
  您可以通过调用 update 方法发布微博。但是需要注意的是,这里的Content必须使用HttpUtility.UrlEncode进行编码,否则会出现乱码。
  看20条已更新的公众微博消息,为最新更新,这是官方API中的第一个接口。这里返回的是 XML 数据或 JSON 数据。您可以根据自己的喜好自由选择。我选择返回 XML 数据。我的方法是将返回的XML数据写入XML文件,然后解析XML文件。代码如下:
  
  获取数据代码
  好的,现在它被调用了。调用比较简单,就是一个空的Default.aspx页面。后台代码如下:
  
  呼叫代码
  至此,所有的代码都写完了,我们来看一下完整的解决方案:
  
  运行后效果如下:
  
  第一次调用API,也是第一次写这么长的文章。欢迎大家多拍几张!!!

使用新浪微博开放平台api同步微博内容至自己网站(python用python调用微博API项目实践的相关内容吗?)

网站优化优采云 发表了文章 • 0 个评论 • 68 次浏览 • 2021-10-29 17:22 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(python用python调用微博API项目实践的相关内容吗?)
  想知道python调用新浪微博API项目的相关内容吗?在本文中,我将仔细讲解调用新浪微博API的相关知识和一些代码示例。欢迎阅读和指正。先重点介绍一下:python,新浪微博,API,一起来学习吧。
  因为最近接触到一个调用新浪微博开放接口的项目,想尝试用python调用微博API。
  SDK下载地址:代码不超过十几K,完全可以理解。
  如果你有微博账号,你可以创建一个新的应用程序,然后你就可以得到应用程序密钥和应用程序密钥。这是应用获得 OAuth2.0 授权所必需的。
  要了解OAuth2,可以查看链接新浪微博的说明。OAuth2授权参数除了app key和app secret外还需要网站回调地址redirect_uri,并且这个回调地址不允许在局域网内(神马localhost,127.0.0.1 好像不行),这着实让我着急了好久。我没有使用API​​调用网站,所以查了很多。看到有人写这个地址可以代替,我试了一下,成功了,这对Diosi来说是个好消息。
  这是一个简单的程序来感受一下:
  设置以下参数
  
import sys
import weibo
import webbrowser
APP_KEY = ''
MY_APP_SECRET = ''
REDIRECT_URL = 'https://api.weibo.com/oauth2/default.html'
  获取微博授权网址,如第二行,用默认浏览器打开后,会要求登录微博,用需要授权的账号登录,如下图
  
api = weibo.APIClient(app_key=APP_KEY,app_secret=MY_APP_SECRET,redirect_uri=REDIRECT_URL)
authorize_url = api.get_authorize_url()
print(authorize_url)
webbrowser.open_new(authorize_url)
  
  登录后会转成一个连接
  key是code值,是认证的关键。手动输入code值模拟认证
  
request = api.request_access_token(code, REDIRECT_URL)
access_token = request.access_token
expires_in = request.expires_in
api.set_access_token(access_token, expires_in)
api.statuses.update.post(status=u'Test OAuth 2.0 Send a Weibo!')
  access_token是获取到的token,expires_in是授权的过期时间(UNIX时间)
  使用 set_access_token 保存授权。然后就可以调用微博界面了。测试发了一条微博
  
  但是,这种手动输入代码的方式并不适合程序调用。是否可以不打开链接请求登录并获得授权?经多方搜索参考,程序改进如下,可自动获取并保存代码,方便程序服务调用。
  
accessWeibo
# -*- coding: utf-8 -*-
#/usr/bin/env python
#access to SinaWeibo By sinaweibopy
#实现微博自动登录,token自动生成,保存及更新
#适合于后端服务调用
from weibo import APIClient
import pymongo
import sys, os, urllib, urllib2
from http_helper import *
from retry import *
try:
import json
except ImportError:
import simplejson as json
# setting sys encoding to utf-8
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
# weibo api访问配置
APP_KEY = '' # app key
APP_SECRET = '' # app secret
REDIRECT_URL = 'https://api.weibo.com/oauth2/default.html' # callback url 授权回调页,与OAuth2.0 授权设置的一致
USERID = '' # 登陆的微博用户名,必须是OAuth2.0 设置的测试账号
USERPASSWD = '' # 用户密码
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=REDIRECT_URL)
def make_access_token():
#请求access token
params = urllib.urlencode({
'action':'submit',
'withOfficalFlag':'0',
'ticket':'',
'isLoginSina':'',
'response_type':'code',
'regCallback':'',
'redirect_uri':REDIRECT_URL,
'client_id':APP_KEY,
'state':'',
'from':'',
'userId':USERID,
'passwd':USERPASSWD,
})
login_url = 'https://api.weibo.com/oauth2/authorize'
url = client.get_authorize_url()
content = urllib2.urlopen(url)
if content:
headers = { 'Referer' : url }
request = urllib2.Request(login_url, params, headers)
opener = get_opener(False)
urllib2.install_opener(opener)
try:
f = opener.open(request)
return_redirect_uri = f.url
except urllib2.HTTPError, e:
return_redirect_uri = e.geturl()
# 取到返回的code
code = return_redirect_uri.split('=')[1]
#得到token
token = client.request_access_token(code,REDIRECT_URL)
save_access_token(token)
def save_access_token(token):
#将access token保存到MongoDB数据库
mongoCon=pymongo.Connection(host="127.0.0.1",port=27017)
db= mongoCon.weibo
t={
"access_token":token['access_token'],
"expires_in":str(token['expires_in']),
"date":time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
}
db.token.insert(t,safe=True)
#Decorator 目的是当调用make_access_token()后再执行一次apply_access_token()
@retry(1)
def apply_access_token():
#从MongoDB读取及设置access token
try:
mongoCon=pymongo.Connection(host="127.0.0.1",port=27017)
db= mongoCon.weibo
if db.token.count()>0:
tokenInfos=db.token.find().sort([("_id",pymongo.DESCENDING)]).limit(1)
else:
make_access_token()
return False
for tokenInfo in tokenInfos:
access_token=tokenInfo["access_token"]
expires_in=tokenInfo["expires_in"]
try:
client.set_access_token(access_token, expires_in)
except StandardError, e:
if hasattr(e, 'error'):
if e.error == 'expired_token':
# token过期重新生成
make_access_token()
return False
else:
pass
except:
make_access_token()
return False
return True
if __name__ == "__main__":
apply_access_token()
# 以下为访问微博api的应用逻辑
# 以发布文字微博接口为例
client.statuses.update.post(status='Test OAuth 2.0 Send a Weibo!')
  
retry.py
import math
import time
# Retry decorator with exponential backoff
def retry(tries, delay=1, backoff=2):
"""Retries a function or method until it returns True.
delay sets the initial delay, and backoff sets how much the delay should
lengthen after each failure. backoff must be greater than 1, or else it
isn't really a backoff. tries must be at least 0, and delay greater than
0."""
if backoff decorated function
return deco_retry # @retry(arg[, ...]) -> true decorator
  
http_helper.py
# -*- coding: utf-8 -*-
#/usr/bin/env python
import urllib2,cookielib
class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_301(cls, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_301(cls, req, fp, code, msg, headers)
result.status = code
print headers
return result
def http_error_302(cls, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_302(cls, req, fp, code, msg, headers)
result.status = code
print headers
return result
def get_cookie():
cookies = cookielib.CookieJar()
return urllib2.HTTPCookieProcessor(cookies)
def get_opener(proxy=False):
rv=urllib2.build_opener(get_cookie(), SmartRedirectHandler())
rv.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')]
return rv
  相关文章 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(python用python调用微博API项目实践的相关内容吗?)
  想知道python调用新浪微博API项目的相关内容吗?在本文中,我将仔细讲解调用新浪微博API的相关知识和一些代码示例。欢迎阅读和指正。先重点介绍一下:python,新浪微博,API,一起来学习吧。
  因为最近接触到一个调用新浪微博开放接口的项目,想尝试用python调用微博API。
  SDK下载地址:代码不超过十几K,完全可以理解。
  如果你有微博账号,你可以创建一个新的应用程序,然后你就可以得到应用程序密钥和应用程序密钥。这是应用获得 OAuth2.0 授权所必需的。
  要了解OAuth2,可以查看链接新浪微博的说明。OAuth2授权参数除了app key和app secret外还需要网站回调地址redirect_uri,并且这个回调地址不允许在局域网内(神马localhost,127.0.0.1 好像不行),这着实让我着急了好久。我没有使用API​​调用网站,所以查了很多。看到有人写这个地址可以代替,我试了一下,成功了,这对Diosi来说是个好消息。
  这是一个简单的程序来感受一下:
  设置以下参数
  
import sys
import weibo
import webbrowser
APP_KEY = ''
MY_APP_SECRET = ''
REDIRECT_URL = 'https://api.weibo.com/oauth2/default.html'
  获取微博授权网址,如第二行,用默认浏览器打开后,会要求登录微博,用需要授权的账号登录,如下图
  
api = weibo.APIClient(app_key=APP_KEY,app_secret=MY_APP_SECRET,redirect_uri=REDIRECT_URL)
authorize_url = api.get_authorize_url()
print(authorize_url)
webbrowser.open_new(authorize_url)
  
  登录后会转成一个连接
  key是code值,是认证的关键。手动输入code值模拟认证
  
request = api.request_access_token(code, REDIRECT_URL)
access_token = request.access_token
expires_in = request.expires_in
api.set_access_token(access_token, expires_in)
api.statuses.update.post(status=u'Test OAuth 2.0 Send a Weibo!')
  access_token是获取到的token,expires_in是授权的过期时间(UNIX时间)
  使用 set_access_token 保存授权。然后就可以调用微博界面了。测试发了一条微博
  
  但是,这种手动输入代码的方式并不适合程序调用。是否可以不打开链接请求登录并获得授权?经多方搜索参考,程序改进如下,可自动获取并保存代码,方便程序服务调用。
  
accessWeibo
# -*- coding: utf-8 -*-
#/usr/bin/env python
#access to SinaWeibo By sinaweibopy
#实现微博自动登录,token自动生成,保存及更新
#适合于后端服务调用
from weibo import APIClient
import pymongo
import sys, os, urllib, urllib2
from http_helper import *
from retry import *
try:
import json
except ImportError:
import simplejson as json
# setting sys encoding to utf-8
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
# weibo api访问配置
APP_KEY = '' # app key
APP_SECRET = '' # app secret
REDIRECT_URL = 'https://api.weibo.com/oauth2/default.html' # callback url 授权回调页,与OAuth2.0 授权设置的一致
USERID = '' # 登陆的微博用户名,必须是OAuth2.0 设置的测试账号
USERPASSWD = '' # 用户密码
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=REDIRECT_URL)
def make_access_token():
#请求access token
params = urllib.urlencode({
'action':'submit',
'withOfficalFlag':'0',
'ticket':'',
'isLoginSina':'',
'response_type':'code',
'regCallback':'',
'redirect_uri':REDIRECT_URL,
'client_id':APP_KEY,
'state':'',
'from':'',
'userId':USERID,
'passwd':USERPASSWD,
})
login_url = 'https://api.weibo.com/oauth2/authorize'
url = client.get_authorize_url()
content = urllib2.urlopen(url)
if content:
headers = { 'Referer' : url }
request = urllib2.Request(login_url, params, headers)
opener = get_opener(False)
urllib2.install_opener(opener)
try:
f = opener.open(request)
return_redirect_uri = f.url
except urllib2.HTTPError, e:
return_redirect_uri = e.geturl()
# 取到返回的code
code = return_redirect_uri.split('=')[1]
#得到token
token = client.request_access_token(code,REDIRECT_URL)
save_access_token(token)
def save_access_token(token):
#将access token保存到MongoDB数据库
mongoCon=pymongo.Connection(host="127.0.0.1",port=27017)
db= mongoCon.weibo
t={
"access_token":token['access_token'],
"expires_in":str(token['expires_in']),
"date":time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
}
db.token.insert(t,safe=True)
#Decorator 目的是当调用make_access_token()后再执行一次apply_access_token()
@retry(1)
def apply_access_token():
#从MongoDB读取及设置access token
try:
mongoCon=pymongo.Connection(host="127.0.0.1",port=27017)
db= mongoCon.weibo
if db.token.count()>0:
tokenInfos=db.token.find().sort([("_id",pymongo.DESCENDING)]).limit(1)
else:
make_access_token()
return False
for tokenInfo in tokenInfos:
access_token=tokenInfo["access_token"]
expires_in=tokenInfo["expires_in"]
try:
client.set_access_token(access_token, expires_in)
except StandardError, e:
if hasattr(e, 'error'):
if e.error == 'expired_token':
# token过期重新生成
make_access_token()
return False
else:
pass
except:
make_access_token()
return False
return True
if __name__ == "__main__":
apply_access_token()
# 以下为访问微博api的应用逻辑
# 以发布文字微博接口为例
client.statuses.update.post(status='Test OAuth 2.0 Send a Weibo!')
  
retry.py
import math
import time
# Retry decorator with exponential backoff
def retry(tries, delay=1, backoff=2):
"""Retries a function or method until it returns True.
delay sets the initial delay, and backoff sets how much the delay should
lengthen after each failure. backoff must be greater than 1, or else it
isn't really a backoff. tries must be at least 0, and delay greater than
0."""
if backoff decorated function
return deco_retry # @retry(arg[, ...]) -> true decorator
  
http_helper.py
# -*- coding: utf-8 -*-
#/usr/bin/env python
import urllib2,cookielib
class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_301(cls, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_301(cls, req, fp, code, msg, headers)
result.status = code
print headers
return result
def http_error_302(cls, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_302(cls, req, fp, code, msg, headers)
result.status = code
print headers
return result
def get_cookie():
cookies = cookielib.CookieJar()
return urllib2.HTTPCookieProcessor(cookies)
def get_opener(proxy=False):
rv=urllib2.build_opener(get_cookie(), SmartRedirectHandler())
rv.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')]
return rv
  相关文章

使用新浪微博开放平台api同步微博内容至自己网站(1.微博三方登录流程和获取认证.2获取流程)

网站优化优采云 发表了文章 • 0 个评论 • 123 次浏览 • 2021-10-29 17:21 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(1.微博三方登录流程和获取认证.2获取流程)
  内容
  1. 微博三方登录流程
  
  https://api.weibo.com/oauth2/authorize?
client_id=4122644977
&response_type=code
&state=study&
forcelogin=true&
redirect_uri=https%3A%2F%2Fstudy.163.com%2Fsns%2Fweibo%2FoAuthCallback.htm%3Foaut
hType%3Dlogin%26returnUrl%3DaHR0cHM6Ly9zdHVkeS4xNjMuY29tL3Byb3ZpZGVyLzQwMDAwMDAwM
DQ3ODAxMi9pbmRleC5odG0%2FZnJvbT1zdHVkeQ%3D%3D%26nrsstcw%3Dfalse%26nc%3Dtrue###
https://study.163.com/provider ... study
  1.1 从前端获取认证码1.2 获取微博access_token1.3 获取微博用户基本信息并存入数据库1.4 生成token to Vue2.第三方登录与本地登录的关联(三种情况)2.1 情况一:没有本地登录,先登录第三方
  这时候就相当于注册了,只是拉取第三方信息注册为本地用户,建立本地用户和第三方用户
  (Openid) 绑定关系
  2.2 情况二:本地未登录,重新登录第三方
  此时用户已经注册了,获取openid后可以直接找到对应的本地用户
  2.3 案例三:本地登录并绑定第三方
  这只需要将获取到的openid绑定到本地用户。
  3.Oauth 认证原理4.为什么要使用三方登录 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(1.微博三方登录流程和获取认证.2获取流程)
  内容
  1. 微博三方登录流程
  
  https://api.weibo.com/oauth2/authorize?
client_id=4122644977
&response_type=code
&state=study&
forcelogin=true&
redirect_uri=https%3A%2F%2Fstudy.163.com%2Fsns%2Fweibo%2FoAuthCallback.htm%3Foaut
hType%3Dlogin%26returnUrl%3DaHR0cHM6Ly9zdHVkeS4xNjMuY29tL3Byb3ZpZGVyLzQwMDAwMDAwM
DQ3ODAxMi9pbmRleC5odG0%2FZnJvbT1zdHVkeQ%3D%3D%26nrsstcw%3Dfalse%26nc%3Dtrue###
https://study.163.com/provider ... study
  1.1 从前端获取认证码1.2 获取微博access_token1.3 获取微博用户基本信息并存入数据库1.4 生成token to Vue2.第三方登录与本地登录的关联(三种情况)2.1 情况一:没有本地登录,先登录第三方
  这时候就相当于注册了,只是拉取第三方信息注册为本地用户,建立本地用户和第三方用户
  (Openid) 绑定关系
  2.2 情况二:本地未登录,重新登录第三方
  此时用户已经注册了,获取openid后可以直接找到对应的本地用户
  2.3 案例三:本地登录并绑定第三方
  这只需要将获取到的openid绑定到本地用户。
  3.Oauth 认证原理4.为什么要使用三方登录

使用新浪微博开放平台api同步微博内容至自己网站(微博直播新浪微博开放平台SDKforNet40+支持OAuth20)

网站优化优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2021-10-28 10:11 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(微博直播新浪微博开放平台SDKforNet40+支持OAuth20)
  查看代码 新浪微博开放平台使用的PHP SDK收录DEMO SAESina App Engine,可以直接使用。SDK已内置,无需下载,使用前需要。微博开放平台基于微博的海量用户和强大的问答百科传播能力,接入第三方合作伙伴服务,为用户提供建议。微博直播组件可以让用户在你的网站上实时讨论热点话题。用户在此发布的微博将发布到微博模块设置显示标题栏显示边框显示发布框设置主题多个主题。
  微博话题墙可以部署在任何支持HTML的网页上,展示话题相关的微博公众号和转发热榜,支持微博置顶。有基础版和PK版两个版本。基础版支持多主题的配置。支持的话。您的访问者可以点击它,将您的内容分享到新浪微博,带来更高回访的关注按钮,该按钮可以部署在任何支持 ifarme 的网页上。在这些网页上点击关注按钮的用户可以成为您的微博粉丝微博话题。我也是新手,第一次使用开放平台进行开发。一开始我觉得无处可去。经过长时间的摸索,终于成功调用了API。现在我不需要给新手高手看这个经验了。
  
  
  欢迎测试新浪微博开放平台SDK for Net 40+支持OAuth20。新浪微博正式支持新版APISDK,并加入官方SDK下载列表。下载中提供了使用 Web 和 Winform 的示例。新浪科技讯 10月16日消息,由SSO授权的SSO微博开放平台近日正式上线。用户只需登录一次即可以普通微博用户身份访问其他可信应用系统。关注新浪微博关注简体版设置简单,只需到新浪微博开放平台申请网站访问权注意简体版不提供技术支持,商业版不提供兼容简化版,
  微博直播
  新浪微博开放平台配备专业团队,为开发者提供360度全方位支持,服务涵盖商业产品运营技术四个层面。希望可以拓展更多优质的现场应用。官方数据显示,新浪微博开放平台已经吸引了数十万第三方开发者,平台上上传了3500个应用程序,其中处于开发或审核阶段的应用程序有7万至8万个。在首届互联网公开大会上,总经理彭少斌表示,新浪微博将推出开放游戏平台,一年内不参与利润分享。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(微博直播新浪微博开放平台SDKforNet40+支持OAuth20)
  查看代码 新浪微博开放平台使用的PHP SDK收录DEMO SAESina App Engine,可以直接使用。SDK已内置,无需下载,使用前需要。微博开放平台基于微博的海量用户和强大的问答百科传播能力,接入第三方合作伙伴服务,为用户提供建议。微博直播组件可以让用户在你的网站上实时讨论热点话题。用户在此发布的微博将发布到微博模块设置显示标题栏显示边框显示发布框设置主题多个主题。
  微博话题墙可以部署在任何支持HTML的网页上,展示话题相关的微博公众号和转发热榜,支持微博置顶。有基础版和PK版两个版本。基础版支持多主题的配置。支持的话。您的访问者可以点击它,将您的内容分享到新浪微博,带来更高回访的关注按钮,该按钮可以部署在任何支持 ifarme 的网页上。在这些网页上点击关注按钮的用户可以成为您的微博粉丝微博话题。我也是新手,第一次使用开放平台进行开发。一开始我觉得无处可去。经过长时间的摸索,终于成功调用了API。现在我不需要给新手高手看这个经验了。
  
  
  欢迎测试新浪微博开放平台SDK for Net 40+支持OAuth20。新浪微博正式支持新版APISDK,并加入官方SDK下载列表。下载中提供了使用 Web 和 Winform 的示例。新浪科技讯 10月16日消息,由SSO授权的SSO微博开放平台近日正式上线。用户只需登录一次即可以普通微博用户身份访问其他可信应用系统。关注新浪微博关注简体版设置简单,只需到新浪微博开放平台申请网站访问权注意简体版不提供技术支持,商业版不提供兼容简化版,
  微博直播
  新浪微博开放平台配备专业团队,为开发者提供360度全方位支持,服务涵盖商业产品运营技术四个层面。希望可以拓展更多优质的现场应用。官方数据显示,新浪微博开放平台已经吸引了数十万第三方开发者,平台上上传了3500个应用程序,其中处于开发或审核阶段的应用程序有7万至8万个。在首届互联网公开大会上,总经理彭少斌表示,新浪微博将推出开放游戏平台,一年内不参与利润分享。

使用新浪微博开放平台api同步微博内容至自己网站(如何对网页分享的样式进行自定义呢?(一))

网站优化优采云 发表了文章 • 0 个评论 • 120 次浏览 • 2021-10-27 22:21 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(如何对网页分享的样式进行自定义呢?(一))
  写作背景:
  分享内容是用户的常用操作,也是产品中常用的功能之一。在网站的一个设计中,正好涉及到分享功能,于是搜集了网上各种前辈资料,整理了APP和网页的分享功能(所有信息来源基本都是通过链接标注出来的)。本文仅对共享的一般实现原理进行说明,不涉及具体的功能流程和实现代码。如有不当之处,希望大家多多指教。
  一、在网络上分享
  1台PC网络共享
  1.1 分享到微信
  PC网页一般会生成网页二维码,用户可以使用手机微信扫描二维码,在微信浏览器中打开;打开后,在微信内置浏览器中使用微信自带的分享功能进行分享。
  
  分享PC网页到微信
  -----如何自定义分享风格?
  使用微信内置浏览器进行二次分享时,会遇到一个问题,就是无法显示网页的缩略图,只能显示默认的占位图。那么如何自定义共享样式呢?以下为官方微信解决方案:
  接入微信的JS-SDK(开发者通过JavaScript代码在网页上使用微信原生功能的工具包)。使用微信内置浏览器分享时,可以自定义网页分享风格(标题和图片风格)。这样可以保证用户在微信生态中进行二次分享时有更好的分享效果。
  你可以参考这个文章
  【解决方案】微信网页链接分享定制-黑子的开发笔记-CSDN博客
  
  上图为使用safari分享网页到微信的样式,下图为使用微信浏览器二次分享网页的样式
  1.2 分享到微博、QQ
  与微信不同,微博和QQ从网页发展而来,对网页分享有很好的支持。通过代码将分享按钮嵌入到网站中,用户可以点击按钮调出微博/QQ登录或分享页面(网页代替客户端)
  具体方法请参考平台官方文档/sharebutton
  
  官方微博说明
  2 移动网络共享
  移动端可以使用浏览器自带的分享功能;当然,为了保持与PC的统一,页面中也可以加入分享功能。
  2.1 分享到微信
  移动端一般会生成一个网页链接,让用户复制链接,然后手动分享(粘贴链接)到微信。效果比较差
  
  百度百科的微信分享风格
  2.2 分享到微博、QQ
  和PC端没有区别:分享按钮通过代码嵌入到网站中,用户可以点击按钮调出微博/QQ登录或分享页面(网页代替客户端)
  
  分享到微博
  二、在APP中分享
  1 使用系统级分享插件
  iOS 提供系统级分享扩展分享插件,帮助系统与应用、应用、应用分享内容。App开发者只需在开发代码中添加原生分享插件,在系统注册后,即可通过Extension与系统和其他App(也注册使用的扩展)分享内容(输出、接受)。
  使用原生分享插件的好处是分享操作不需要进入收录APP(接受内容的APP),也不需要在应用之间来回跳转;容纳更多应用,更开放;用户可以根据自己的习惯自定义分享面板 收录APP。
  详情请参考这个文章iOS Share Extension分享机制
  
  要在 safari 中将网页分享到微信,您可以使用本机分享插件。无需唤醒微信客户端即可实现分享,不影响用户操作的主流。
  2 使用自定义分享插件
  国内应用更符合自己的业务目标和业务需求,使用自定义分享插件。这时候就需要遵循所收录的APP(接受内容的APP)的规范。以分享到微信为例。一般来说,通过集成微信SDK,调用微信接口,调用微信分享表(分享面板)进行分享,然后返回给自己的应用。
  
  左图为荔枝APP自定义分享面板。分享H5到微信时,需要唤醒微信客户端,分享后返回荔枝APP。
  -------官方微信分享说明------
  微信分享采集是指第三方应用允许用户通过访问该功能,将应用中的文字、图片、音乐、视频、网页、小程序分享到微信好友会话、朋友圈或添加到微信采集。
  微信分享和采集功能已向所有开发者开放。开发者在微信开放平台账号下申请App并审核通过后,即可获得微信分享和采集权限。
  微信分享采集目前支持文字、图片、音乐、视频、网页、小程序六种类型(海外应用支持网页和小程序类型分享)。开发者在App中集成微信SDK后,即可调用接口实现。
  -------------------------------------
  详情请参考微信官方文档
  /cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317332&token=&lang=zh_CN
  但是目前微信已经取消了分享结果的返回,所以我们无法再知道用户是真的完成了分享还是中途离开了。. .
  
  微信官方说明
  结论:
  分享功能虽然经常使用,但很容易被用户和产品经理忽略。以上简单梳理了APP和网页的分享实现,很多细节有待进一步研究和补充~ 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(如何对网页分享的样式进行自定义呢?(一))
  写作背景:
  分享内容是用户的常用操作,也是产品中常用的功能之一。在网站的一个设计中,正好涉及到分享功能,于是搜集了网上各种前辈资料,整理了APP和网页的分享功能(所有信息来源基本都是通过链接标注出来的)。本文仅对共享的一般实现原理进行说明,不涉及具体的功能流程和实现代码。如有不当之处,希望大家多多指教。
  一、在网络上分享
  1台PC网络共享
  1.1 分享到微信
  PC网页一般会生成网页二维码,用户可以使用手机微信扫描二维码,在微信浏览器中打开;打开后,在微信内置浏览器中使用微信自带的分享功能进行分享。
  
  分享PC网页到微信
  -----如何自定义分享风格?
  使用微信内置浏览器进行二次分享时,会遇到一个问题,就是无法显示网页的缩略图,只能显示默认的占位图。那么如何自定义共享样式呢?以下为官方微信解决方案:
  接入微信的JS-SDK(开发者通过JavaScript代码在网页上使用微信原生功能的工具包)。使用微信内置浏览器分享时,可以自定义网页分享风格(标题和图片风格)。这样可以保证用户在微信生态中进行二次分享时有更好的分享效果。
  你可以参考这个文章
  【解决方案】微信网页链接分享定制-黑子的开发笔记-CSDN博客
  
  上图为使用safari分享网页到微信的样式,下图为使用微信浏览器二次分享网页的样式
  1.2 分享到微博、QQ
  与微信不同,微博和QQ从网页发展而来,对网页分享有很好的支持。通过代码将分享按钮嵌入到网站中,用户可以点击按钮调出微博/QQ登录或分享页面(网页代替客户端)
  具体方法请参考平台官方文档/sharebutton
  
  官方微博说明
  2 移动网络共享
  移动端可以使用浏览器自带的分享功能;当然,为了保持与PC的统一,页面中也可以加入分享功能。
  2.1 分享到微信
  移动端一般会生成一个网页链接,让用户复制链接,然后手动分享(粘贴链接)到微信。效果比较差
  
  百度百科的微信分享风格
  2.2 分享到微博、QQ
  和PC端没有区别:分享按钮通过代码嵌入到网站中,用户可以点击按钮调出微博/QQ登录或分享页面(网页代替客户端)
  
  分享到微博
  二、在APP中分享
  1 使用系统级分享插件
  iOS 提供系统级分享扩展分享插件,帮助系统与应用、应用、应用分享内容。App开发者只需在开发代码中添加原生分享插件,在系统注册后,即可通过Extension与系统和其他App(也注册使用的扩展)分享内容(输出、接受)。
  使用原生分享插件的好处是分享操作不需要进入收录APP(接受内容的APP),也不需要在应用之间来回跳转;容纳更多应用,更开放;用户可以根据自己的习惯自定义分享面板 收录APP。
  详情请参考这个文章iOS Share Extension分享机制
  
  要在 safari 中将网页分享到微信,您可以使用本机分享插件。无需唤醒微信客户端即可实现分享,不影响用户操作的主流。
  2 使用自定义分享插件
  国内应用更符合自己的业务目标和业务需求,使用自定义分享插件。这时候就需要遵循所收录的APP(接受内容的APP)的规范。以分享到微信为例。一般来说,通过集成微信SDK,调用微信接口,调用微信分享表(分享面板)进行分享,然后返回给自己的应用。
  
  左图为荔枝APP自定义分享面板。分享H5到微信时,需要唤醒微信客户端,分享后返回荔枝APP。
  -------官方微信分享说明------
  微信分享采集是指第三方应用允许用户通过访问该功能,将应用中的文字、图片、音乐、视频、网页、小程序分享到微信好友会话、朋友圈或添加到微信采集。
  微信分享和采集功能已向所有开发者开放。开发者在微信开放平台账号下申请App并审核通过后,即可获得微信分享和采集权限。
  微信分享采集目前支持文字、图片、音乐、视频、网页、小程序六种类型(海外应用支持网页和小程序类型分享)。开发者在App中集成微信SDK后,即可调用接口实现。
  -------------------------------------
  详情请参考微信官方文档
  /cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317332&token=&lang=zh_CN
  但是目前微信已经取消了分享结果的返回,所以我们无法再知道用户是真的完成了分享还是中途离开了。. .
  
  微信官方说明
  结论:
  分享功能虽然经常使用,但很容易被用户和产品经理忽略。以上简单梳理了APP和网页的分享实现,很多细节有待进一步研究和补充~

使用新浪微博开放平台api同步微博内容至自己网站(静态博客框架Hexo入门,本文评论系统怎么做?)

网站优化优采云 发表了文章 • 0 个评论 • 81 次浏览 • 2021-10-27 22:20 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(静态博客框架Hexo入门,本文评论系统怎么做?)
  本文仅介绍如何基于github问题实现第三方评论系统。对于 Hexo 的介绍,本文不打算赘述。如果有之前不了解Hexo的童鞋,可以看看之前的文章《Hexo介绍,一个静态博客框架》,或者直接访问Hexo官网
  一、原因
  个人博客基于静态博客系统(Hexo),没有任何后端功能,如搜索和评论系统。不过,如果想给静态博客添加评论功能,也不是没有可能。这时候就必须使用第三方评论系统。
  什么是第三方评论系统?博客或 cms 系统通常由两部分组成:内容和评论。评论可以增加博主与用户之间的互动,也是博主传达思想和观点的一对多交流平台。所以除了社区平台,评论也成为了一般博客和cms系统的必备功能。大型网站自己开发评论系统和分享系统,一般中小网站自己开发评论系统,成本高。而且垃圾评论和非法关键词过滤比较困难,所以国内外都有第三方评论系统。以下是一些曾经流行或现在流行的第三方评论系统。
  那么回到主题,市面上的第三方评论系统太多了,哪怕只有一两个宕机了,选择还是很多的。为什么要自己做一个?这不是造轮子吗?其实刚开始的时候,我话很多,心里也很高兴。突然有一天我说我挂了。没有办法。然后我选择了另一个,然后我将其更改为网易云。过了一会儿,网易云也死了。
  后来在网上搜了搜,发现居然有人用GitHub Issue做了一个评论系统。这无疑是一个非常好的想法,非常有创意。当然我也用过,但总觉得有点难看,和自己博客的主题不符。只用了两天,我就把它撤了。我打算自己做一个。就去做吧,程序员总喜欢造轮子。
  二、什么是 GitHub 问题
  如果你经常访问GitHub的童鞋,你应该知道这个功能。有人了解GitHub的问题功能,就像TODO列表一样。你可以把下一步想要完成的所有工作,比如功能添加、bug修复等,都写到一个issue里面,放在上面。它可以用作提醒或统一管理。此外,每个提交都可以有选择地与一个问题相关联。例如,通过在消息中添加 #n,它可以与第 n 个问题相关联。详情请参考知乎。其他人对“github问题”做了什么?”答案。而这个博客的评论数据存储issues仓库地址是,仓库里没有托管代码。总之,如果我想用github Issues做一个评论系统,我实际上是把数据存储在github issues .
  三、评论系统实现
  准备工作
  
  应用名称:您的站点名称;
  主页网址:您的网站主页链接;
  应用描述:站点描述;
  授权回调地址:GitHub授权成功后的返回地址
  创建成功后,会生成一个Client ID和一个Client Secret。
  GitHub 提供了很多方便第三方开发的API。当然,添加、删除、修改、检查github问题的API也在其中。有了这些API,你就可以执行各种技巧,比如我们现在要写的评论系统。此外,也有人怀疑我们是否应该“滥用”这些 API。不过我个人觉得GitHub既然提供了这些API,也就意味着把这些权限开放给大家,大家不要害怕“滥用”。那么,需要哪些API来满足我们目前的需求,下面就让我一一列举,以我的账号为例,jangdelong是Github名称,blog_comments是仓库名称。
  GET:获取所有问题信息
  GET:获取问题下的信息(11 是问题编号)
  GET: comments 获取问题下的评论
  GET:获取评论ID 111下的所有反应(反应包括[+1]、不喜欢[-1]、喜欢[心]等字段)
  POST:创建一个问题
  POST:在问题编号 11 下创建评论
  POST:在 ID 为 111 的评论下创建一个反应(例如心脏)
  POST:markdown语法解析接口
  整体设计
  流程图:
   |--> 显示已登录
|--> 已登录 --> |--> 加载评论列表 --> 分页加载
| |--> 其他
| |--> 评论操作 --> 成功/失败 |
开始 --> GitHub 授权登录 ? --> | |--> 结束
| |--> 显示未登录 |
|--> 未登录 --> |--> 加载评论列表 --> 分页加载
|--> 其他
|--> 评论操作 --> 提示未登录状态
  效果图:
  
  因此,我们可以将评论系统分为列表(list)、评论框(box)、顶部登录状态栏(signbar)等部分。View部分的代码组织为:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Renders = {
// 列表模块
list: {
tpl: ...,
...
},
// 评论框模块
box: {
tpl: ...,
...
},
// 顶部登录状态栏
signBar: {
tpl: ...,
...
},
... // 其他模块视图
};
...
})(JELON);
  将视图部分的代码整理好后,我们根据GitHub提供的各种API将其封装在Requests中,整理如下:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Requests = {
// 根据 label 获取 issue 编号
getIssueNumberByLabel: function () { ... },
// 创建 issue
createIssue: function () { ... },
// 根据 issue 编号获取评论列表
getCommentListByIssueNumber: function () { ... },
// 根据评论 ID 获取 reactions (即点赞数据)
getReactionsByCommentId: function () { ... },
// markdown 解析
markdown: function () { ... },
// 通过 code 获取 access_token
getAccessToken: function () { ... },
// 利用 access_token 去获取 GitHub 用户信息
getUserInfo: function () { ... },
// 创建评论
createComment: function () { ... },
// 创建 reactions (点赞)
createReaction: function () { ... }
};
...
})(JELON);
  下一步是封装事件操作。我们将其封装到 Actions 中。代码组织如下:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Actions = {
// 初始加载,如列表、登录状态等
init: function () { ... },
// 登出操作
signOut: function () { ... },
// 列表翻页跳转
pageJump: function () { ... },
// 编辑预览
editPreviewSwitch: function () { ... },
// 提交评论操作
postComment: function () { ... },
// 点赞操作
like: function () { ... }
};
...
})(JELON);
  程序入口:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Comment = function (options) {
JL.options = options || {};
$('comments').innerHTML = [
this.Renders.signBar.tpl,
this.Renders.box.tpl,
this.Renders.tips,
this.Renders.list.tpl
].join('');
JL.Actions.init();
};
...
})(JELON);
  登录流程
  GitHub授权登录是必不可少的功能,登录后才能发表评论。 前面说过,GitHub授权登录遵循OAuth2.0标准。下面是OAuth2.0的操作流程,让我们更好的理解。
  
  那么,GitHub 授权登录是如何按照这个标准进行的呢?我们来简单介绍一下。如果想更详细的了解,也可以访问GitHub官方文档。
  用户发起重定向请求授权服务器换取code
  `GET http://github.com/login/oauth/authorize`
  拿到code后,用client_id、client_secret和code兑换token_access。(上面的准备工作中提到了client_id和client_secret)
  `POST https://github.com/login/oauth/access_token`
  获取token_access后,我们可以使用token_access获取登录用户的信息
  `GET https://api.github.com/user`
  经过以上3步,GitHub授权登录就完成了。
  四、如何使用评论系统
  介绍评论系统相关的css和js。引入相关样式和脚本后,在页面中添加以下代码:
  
JELON.Comment({
container: 'comments', // 评论框容器id或对象,留空是默认为 comments
label: '' || '', // 文章标签
owner: '', // GitHub application 创建者
repo: '', // issue 所在仓库名
clientId: '', // GitHub application client_id
clientSecret: '' // GitHub application client_secret
});
  由于这个评论系统要集成到个人主题中,所以应该配合hexo-theme-xups使用。hexo-theme-xups 的主题链接是最新的主题(带GitHub登录评论功能),后续会更新上来,当然以后会持续更新优化,欢迎多多star。五、遇到的问题
  主要遇到三个问题,一个是标签权限的创建,一个是跨域问题,一个是GitHub授权登录兼容性问题。
  创建标签权限问题(目前未解决)。标签是文章和issue之间的链接,因为我们需要使用标签来查询issue号,以便后续的流程可以继续。现在遇到的问题是,对于新的文章,只有自己账号(GitHub Application)的创建者才能创建带有标签的issue。参考GitHub界面(POST /repos/:owner/:repo/issues)文档,上面说了
  > Labels to associate with this issue. NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise.
  跨域问题(暂时解决)。主要目的是交换 token_access POST 的代码。这个接口是跨域的。临时解决办法是
  使用:///login/oauth/access_token 进行转发。看:。GitHub授权登录兼容性问题(暂未解决)。经过简单的测试,发现PC端的兼容性问题主要是一些旧版本的浏览器,包括一些旧版本的谷歌浏览器(版本号55.x.xxxx.xx);而移动端主要是UC浏览器,无法实现GitHub授权登录。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(静态博客框架Hexo入门,本文评论系统怎么做?)
  本文仅介绍如何基于github问题实现第三方评论系统。对于 Hexo 的介绍,本文不打算赘述。如果有之前不了解Hexo的童鞋,可以看看之前的文章《Hexo介绍,一个静态博客框架》,或者直接访问Hexo官网
  一、原因
  个人博客基于静态博客系统(Hexo),没有任何后端功能,如搜索和评论系统。不过,如果想给静态博客添加评论功能,也不是没有可能。这时候就必须使用第三方评论系统。
  什么是第三方评论系统?博客或 cms 系统通常由两部分组成:内容和评论。评论可以增加博主与用户之间的互动,也是博主传达思想和观点的一对多交流平台。所以除了社区平台,评论也成为了一般博客和cms系统的必备功能。大型网站自己开发评论系统和分享系统,一般中小网站自己开发评论系统,成本高。而且垃圾评论和非法关键词过滤比较困难,所以国内外都有第三方评论系统。以下是一些曾经流行或现在流行的第三方评论系统。
  那么回到主题,市面上的第三方评论系统太多了,哪怕只有一两个宕机了,选择还是很多的。为什么要自己做一个?这不是造轮子吗?其实刚开始的时候,我话很多,心里也很高兴。突然有一天我说我挂了。没有办法。然后我选择了另一个,然后我将其更改为网易云。过了一会儿,网易云也死了。
  后来在网上搜了搜,发现居然有人用GitHub Issue做了一个评论系统。这无疑是一个非常好的想法,非常有创意。当然我也用过,但总觉得有点难看,和自己博客的主题不符。只用了两天,我就把它撤了。我打算自己做一个。就去做吧,程序员总喜欢造轮子。
  二、什么是 GitHub 问题
  如果你经常访问GitHub的童鞋,你应该知道这个功能。有人了解GitHub的问题功能,就像TODO列表一样。你可以把下一步想要完成的所有工作,比如功能添加、bug修复等,都写到一个issue里面,放在上面。它可以用作提醒或统一管理。此外,每个提交都可以有选择地与一个问题相关联。例如,通过在消息中添加 #n,它可以与第 n 个问题相关联。详情请参考知乎。其他人对“github问题”做了什么?”答案。而这个博客的评论数据存储issues仓库地址是,仓库里没有托管代码。总之,如果我想用github Issues做一个评论系统,我实际上是把数据存储在github issues .
  三、评论系统实现
  准备工作
  
  应用名称:您的站点名称;
  主页网址:您的网站主页链接;
  应用描述:站点描述;
  授权回调地址:GitHub授权成功后的返回地址
  创建成功后,会生成一个Client ID和一个Client Secret。
  GitHub 提供了很多方便第三方开发的API。当然,添加、删除、修改、检查github问题的API也在其中。有了这些API,你就可以执行各种技巧,比如我们现在要写的评论系统。此外,也有人怀疑我们是否应该“滥用”这些 API。不过我个人觉得GitHub既然提供了这些API,也就意味着把这些权限开放给大家,大家不要害怕“滥用”。那么,需要哪些API来满足我们目前的需求,下面就让我一一列举,以我的账号为例,jangdelong是Github名称,blog_comments是仓库名称。
  GET:获取所有问题信息
  GET:获取问题下的信息(11 是问题编号)
  GET: comments 获取问题下的评论
  GET:获取评论ID 111下的所有反应(反应包括[+1]、不喜欢[-1]、喜欢[心]等字段)
  POST:创建一个问题
  POST:在问题编号 11 下创建评论
  POST:在 ID 为 111 的评论下创建一个反应(例如心脏)
  POST:markdown语法解析接口
  整体设计
  流程图:
   |--> 显示已登录
|--> 已登录 --> |--> 加载评论列表 --> 分页加载
| |--> 其他
| |--> 评论操作 --> 成功/失败 |
开始 --> GitHub 授权登录 ? --> | |--> 结束
| |--> 显示未登录 |
|--> 未登录 --> |--> 加载评论列表 --> 分页加载
|--> 其他
|--> 评论操作 --> 提示未登录状态
  效果图:
  
  因此,我们可以将评论系统分为列表(list)、评论框(box)、顶部登录状态栏(signbar)等部分。View部分的代码组织为:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Renders = {
// 列表模块
list: {
tpl: ...,
...
},
// 评论框模块
box: {
tpl: ...,
...
},
// 顶部登录状态栏
signBar: {
tpl: ...,
...
},
... // 其他模块视图
};
...
})(JELON);
  将视图部分的代码整理好后,我们根据GitHub提供的各种API将其封装在Requests中,整理如下:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Requests = {
// 根据 label 获取 issue 编号
getIssueNumberByLabel: function () { ... },
// 创建 issue
createIssue: function () { ... },
// 根据 issue 编号获取评论列表
getCommentListByIssueNumber: function () { ... },
// 根据评论 ID 获取 reactions (即点赞数据)
getReactionsByCommentId: function () { ... },
// markdown 解析
markdown: function () { ... },
// 通过 code 获取 access_token
getAccessToken: function () { ... },
// 利用 access_token 去获取 GitHub 用户信息
getUserInfo: function () { ... },
// 创建评论
createComment: function () { ... },
// 创建 reactions (点赞)
createReaction: function () { ... }
};
...
})(JELON);
  下一步是封装事件操作。我们将其封装到 Actions 中。代码组织如下:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Actions = {
// 初始加载,如列表、登录状态等
init: function () { ... },
// 登出操作
signOut: function () { ... },
// 列表翻页跳转
pageJump: function () { ... },
// 编辑预览
editPreviewSwitch: function () { ... },
// 提交评论操作
postComment: function () { ... },
// 点赞操作
like: function () { ... }
};
...
})(JELON);
  程序入口:
  // 为了减少全局变量,整个网站就暴露一个全局变量 JELON
var JELON = JELON || {};
;(function (JL) {
...
JL.Comment = function (options) {
JL.options = options || {};
$('comments').innerHTML = [
this.Renders.signBar.tpl,
this.Renders.box.tpl,
this.Renders.tips,
this.Renders.list.tpl
].join('');
JL.Actions.init();
};
...
})(JELON);
  登录流程
  GitHub授权登录是必不可少的功能,登录后才能发表评论。 前面说过,GitHub授权登录遵循OAuth2.0标准。下面是OAuth2.0的操作流程,让我们更好的理解。
  
  那么,GitHub 授权登录是如何按照这个标准进行的呢?我们来简单介绍一下。如果想更详细的了解,也可以访问GitHub官方文档。
  用户发起重定向请求授权服务器换取code
  `GET http://github.com/login/oauth/authorize`
  拿到code后,用client_id、client_secret和code兑换token_access。(上面的准备工作中提到了client_id和client_secret)
  `POST https://github.com/login/oauth/access_token`
  获取token_access后,我们可以使用token_access获取登录用户的信息
  `GET https://api.github.com/user`
  经过以上3步,GitHub授权登录就完成了。
  四、如何使用评论系统
  介绍评论系统相关的css和js。引入相关样式和脚本后,在页面中添加以下代码:
  
JELON.Comment({
container: 'comments', // 评论框容器id或对象,留空是默认为 comments
label: '' || '', // 文章标签
owner: '', // GitHub application 创建者
repo: '', // issue 所在仓库名
clientId: '', // GitHub application client_id
clientSecret: '' // GitHub application client_secret
});
  由于这个评论系统要集成到个人主题中,所以应该配合hexo-theme-xups使用。hexo-theme-xups 的主题链接是最新的主题(带GitHub登录评论功能),后续会更新上来,当然以后会持续更新优化,欢迎多多star。五、遇到的问题
  主要遇到三个问题,一个是标签权限的创建,一个是跨域问题,一个是GitHub授权登录兼容性问题。
  创建标签权限问题(目前未解决)。标签是文章和issue之间的链接,因为我们需要使用标签来查询issue号,以便后续的流程可以继续。现在遇到的问题是,对于新的文章,只有自己账号(GitHub Application)的创建者才能创建带有标签的issue。参考GitHub界面(POST /repos/:owner/:repo/issues)文档,上面说了
  > Labels to associate with this issue. NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise.
  跨域问题(暂时解决)。主要目的是交换 token_access POST 的代码。这个接口是跨域的。临时解决办法是
  使用:///login/oauth/access_token 进行转发。看:。GitHub授权登录兼容性问题(暂未解决)。经过简单的测试,发现PC端的兼容性问题主要是一些旧版本的浏览器,包括一些旧版本的谷歌浏览器(版本号55.x.xxxx.xx);而移动端主要是UC浏览器,无法实现GitHub授权登录。

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博api开发内容一个整理和说明,应用开发)

网站优化优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2021-10-27 15:03 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博api开发内容一个整理和说明,应用开发)
  现在玩微博的人越来越多,关于微博的第三方应用开​​发也越来越多。偶然接触到新浪微博API开发。新浪微博API开发资源比较大。新浪微博为开发者提供了一个平台。URL为: 收录新浪微博开发的综合信息,包括开发者的使用和介绍,各种语言的api功能介绍文档,sdk等资料。.
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。内容组织和解释,
  新浪微博API开发前的准备
  首先到新浪微博开放平台下载基于PHP的SDK开发包。下载地址为:
  下载完成后放到自己的开发环境中解压。演示程序也包括在内。我们可以参考它的示例程序进行编写。
  新浪微博API开发最重要的用户授权流程
  事实上,开发过程中的很多问题都集中在用户授权阶段。我开发的第三方应用使用的是oauth授权。oauth授权的流程在新浪微博开放平台上做了清晰完整的介绍。我们你可以看看。这里我从实例开发的角度进行介绍和讲解。
  1.首先获取未授权的请求令牌
  复制代码代码如下:
  $o = new weibooauth( wb_akey, wb_skey );
  $keys = $o->getrequesttoken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我们需要在新浪微博开放平台注册一个账号,或者直接用我们的新浪微博账号登录,进入我的应用,然后按照提示创建我们自己的第三方应用。创建完成后,我们可以得到两个授权app key和app secret值,这两个值是我们应用开发的关键。
  获取到授权值后,我们可以通过上面的代码获取未授权的请求令牌值,该值将存储在$key数组变量中。
  2. 然后请求用户授权token
  复制代码代码如下:
  $_session['keys'] = $keys;
  aurl = $o->getauthorizeurl( $keys['oauth_token'] ,false,'');
  获取到未授权请求token值后,我们就可以使用上面的代码准备去新浪微博授权页面进行授权了。$aurl 是授权链接页面。得到$aurl后,我们可以使用header()直接跳转到它。授权页面,然后用户输入新浪微博账号和密码进行授权。授权完成后会自动跳转回你最后一个参数设置的回调页面:这个链接可以设置为上一个页面,这样授权完成后会显示 再次自动跳转回来。
  需要说明的是,需要设置会话密钥的值,在下面获取的授权访问令牌中需要该值。很多朋友可能会参考开放平台上的说明进行授权,但是发现总是报错。这通常是问题所在。您尚未设置会话的键值。当然,下面的访问令牌的值是无法获取的。必须记住这一点。
  3.最终得到用户授权的access token
  复制代码代码如下:
  $o = 新的 weibooauth( wb_akey,
  wb_skey,
  $_session['keys']['oauth_token'],
  $_session['keys']['oauth_token_secret'] );
  $last_key = $o->getaccesstoken( $_request['oauth_verifier']);
  回声($last_key['oauth_token']);
  以上代码最终获得了用户授权的访问令牌。一共有两个值,存放在 $last_key 数组变量中。我们也可以看到最后两个参数是我们之前设置的session值。至此,基本完成。这是一个完整的新浪微博用户授权流程。
  授权完成后工作
  授权完成后,我们就可以开始调用新浪微博提供的各种api函数接口进行实际应用开发了。这里我简单介绍一下获取最新微博记录的界面。其他类似。
  获取新浪微博最新信息的API接口函数为:public_timeline(),示例代码如下:
  复制代码代码如下:
  //获取前20条最新更新的公众微博新闻
  $c = 新微博客户端( wb_akey,
  wb_skey,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c->public_timeline();
  if ($msg === false || $msg === null){
  echo "发生错误";
  返回假;
  }
  if (isset($msg['error_code']) && isset($msg['error'])){
  echo ('error_code:'.$msg['error_code'].'; error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常,我们在获取到用户授权的访问令牌的值后,将它们保存在我们的用户表中,并与我们应用程序中的帐户对应。之后我们就不用每次调用新浪微博的API接口都去。认证。
  上面的代码很简单,实例化weiboclient对象,然后直接调用接口函数public_timeline获取返回的信息,如果没有错误。通常新浪微博api接口返回的数据格式一般是json格式或者xml格式,而我们这里是用php开发的,使用json格式数据有先天优势,如果返回json格式数据,直接用php函数 json_decode() 可以转换为 PHP 常用的数组格式。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博api开发内容一个整理和说明,应用开发)
  现在玩微博的人越来越多,关于微博的第三方应用开​​发也越来越多。偶然接触到新浪微博API开发。新浪微博API开发资源比较大。新浪微博为开发者提供了一个平台。URL为: 收录新浪微博开发的综合信息,包括开发者的使用和介绍,各种语言的api功能介绍文档,sdk等资料。.
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。内容组织和解释,
  新浪微博API开发前的准备
  首先到新浪微博开放平台下载基于PHP的SDK开发包。下载地址为:
  下载完成后放到自己的开发环境中解压。演示程序也包括在内。我们可以参考它的示例程序进行编写。
  新浪微博API开发最重要的用户授权流程
  事实上,开发过程中的很多问题都集中在用户授权阶段。我开发的第三方应用使用的是oauth授权。oauth授权的流程在新浪微博开放平台上做了清晰完整的介绍。我们你可以看看。这里我从实例开发的角度进行介绍和讲解。
  1.首先获取未授权的请求令牌
  复制代码代码如下:
  $o = new weibooauth( wb_akey, wb_skey );
  $keys = $o->getrequesttoken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我们需要在新浪微博开放平台注册一个账号,或者直接用我们的新浪微博账号登录,进入我的应用,然后按照提示创建我们自己的第三方应用。创建完成后,我们可以得到两个授权app key和app secret值,这两个值是我们应用开发的关键。
  获取到授权值后,我们可以通过上面的代码获取未授权的请求令牌值,该值将存储在$key数组变量中。
  2. 然后请求用户授权token
  复制代码代码如下:
  $_session['keys'] = $keys;
  aurl = $o->getauthorizeurl( $keys['oauth_token'] ,false,'');
  获取到未授权请求token值后,我们就可以使用上面的代码准备去新浪微博授权页面进行授权了。$aurl 是授权链接页面。得到$aurl后,我们可以使用header()直接跳转到它。授权页面,然后用户输入新浪微博账号和密码进行授权。授权完成后会自动跳转回你最后一个参数设置的回调页面:这个链接可以设置为上一个页面,这样授权完成后会显示 再次自动跳转回来。
  需要说明的是,需要设置会话密钥的值,在下面获取的授权访问令牌中需要该值。很多朋友可能会参考开放平台上的说明进行授权,但是发现总是报错。这通常是问题所在。您尚未设置会话的键值。当然,下面的访问令牌的值是无法获取的。必须记住这一点。
  3.最终得到用户授权的access token
  复制代码代码如下:
  $o = 新的 weibooauth( wb_akey,
  wb_skey,
  $_session['keys']['oauth_token'],
  $_session['keys']['oauth_token_secret'] );
  $last_key = $o->getaccesstoken( $_request['oauth_verifier']);
  回声($last_key['oauth_token']);
  以上代码最终获得了用户授权的访问令牌。一共有两个值,存放在 $last_key 数组变量中。我们也可以看到最后两个参数是我们之前设置的session值。至此,基本完成。这是一个完整的新浪微博用户授权流程。
  授权完成后工作
  授权完成后,我们就可以开始调用新浪微博提供的各种api函数接口进行实际应用开发了。这里我简单介绍一下获取最新微博记录的界面。其他类似。
  获取新浪微博最新信息的API接口函数为:public_timeline(),示例代码如下:
  复制代码代码如下:
  //获取前20条最新更新的公众微博新闻
  $c = 新微博客户端( wb_akey,
  wb_skey,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c->public_timeline();
  if ($msg === false || $msg === null){
  echo "发生错误";
  返回假;
  }
  if (isset($msg['error_code']) && isset($msg['error'])){
  echo ('error_code:'.$msg['error_code'].'; error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常,我们在获取到用户授权的访问令牌的值后,将它们保存在我们的用户表中,并与我们应用程序中的帐户对应。之后我们就不用每次调用新浪微博的API接口都去。认证。
  上面的代码很简单,实例化weiboclient对象,然后直接调用接口函数public_timeline获取返回的信息,如果没有错误。通常新浪微博api接口返回的数据格式一般是json格式或者xml格式,而我们这里是用php开发的,使用json格式数据有先天优势,如果返回json格式数据,直接用php函数 json_decode() 可以转换为 PHP 常用的数组格式。

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博API研究研究实现发布微博功能的授权认证)

网站优化优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-10-24 00:08 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博API研究研究实现发布微博功能的授权认证)
  本文文章主要介绍Java使用新浪微博API通过账号密码登录微博的例子。一般来说,第三方app使用OAuth授权鉴权,然后跳转。账号方式更自由,有需要的朋友可以参考
  今天发表了一篇关于新浪微博API的研究,现在已经实现了发布微博的功能,包括带图片的微博。为安全起见,新浪微博API不提供微博账号密码登录功能。相反,它使用 OAuth 授权。用户通过浏览器访问新浪网站进行登录,登录成功后,浏览器将key和secret返回给程序。
  主文件:
  一个登录按钮、一个输入框和一个发布按钮
  因为要接收浏览器返回的数据,所以AndroidManifest.xml在注册Activity的时候必须添加一个Intent-Filter
  意图过滤器必须分两部分编写。如果写在一起,就不能启动。
  为简单起见,直接复制新浪示例中的OAuthConstant类:
   package weibo4android.androidexamples; import weibo4android.Weibo; import weibo4android.http.AccessToken; import weibo4android.http.RequestToken; public class OAuthConstant { private static Weibo weibo=null; private static OAuthConstant instance=null; private RequestToken requestToken; private AccessToken accessToken; private String token; private String tokenSecret; private OAuthConstant(){}; public static synchronized OAuthConstant getInstance(){ if(instance==null) instance= new OAuthConstant(); return instance; } public Weibo getWeibo(){ if(weibo==null) weibo= new Weibo(); return weibo; } public AccessToken getAccessToken() { return accessToken; } public void setAccessToken(AccessToken accessToken) { this.accessToken = accessToken; this.token=accessToken.getToken(); this.tokenSecret=accessToken.getTokenSecret(); } public RequestToken getRequestToken() { return requestToken; } public void setRequestToken(RequestToken requestToken) { this.requestToken = requestToken; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public String getTokenSecret() { return tokenSecret; } public void setTokenSecret(String tokenSecret) { this.tokenSecret = tokenSecret; } }
  接下来是最关键的主程序:
   package com.pocketdigi.weibo; import java.io.File; import weibo4android.Weibo; import weibo4android.WeiboException; import weibo4android.http.AccessToken; import weibo4android.http.RequestToken; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Main extends Activity { /** Called when the activity is first created. */ String key = "", secret = ""; Button login,send; EditText status; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); System.setProperty("weibo4j.oauth.consumerKey", "3997936609"); System.setProperty("weibo4j.oauth.consumerSecret", "8bc9e3bfd6ae8e3b2b8bda9079918950"); //设置在新浪应用开放平台申请的应用的key和secret login=(Button)findViewById(R.id.login); send=(Button)findViewById(R.id.send); status=(EditText)findViewById(R.id.status); login.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub login(); //登录 }}); send.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub String text=String.valueOf(status.getText()); Weibo weibo = new Weibo(); weibo.setToken(key,secret); try { //weibo.updateStatus(text); //只发文字 File f=new File("/sdcard/wallpaper/129567208597069400.jpg"); weibo.uploadStatus(text,f ); //发文字+图片,这里需要导入commons-httpclient-3.0.1.jar,自己网上下 //在实际项目上,最好放Thread里,因为按下去的时候按钮会卡 } catch (WeiboException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); //启动时执行检测是否来自网页登录返回 //如果是,获取key和secret //否则读取SharedPreferences //若得不到key和secret,直接跳转登录 Uri uri = this.getIntent().getData(); if (uri != null) { //如果是浏览器返回 try { RequestToken requestToken = OAuthConstant.getInstance() .getRequestToken(); AccessToken accessToken = requestToken.getAccessToken(uri .getQueryParameter("oauth_verifier")); OAuthConstant.getInstance().setAccessToken(accessToken); // 保存 Editor sharedata = getSharedPreferences("WeiBo", 0).edit(); sharedata.putString("key", accessToken.getToken()); sharedata.putString("secret", accessToken.getTokenSecret()); sharedata.commit(); key = accessToken.getToken(); secret = accessToken.getTokenSecret(); } catch (WeiboException e) { e.printStackTrace(); } } else { //如果是用户自己启动 SharedPreferences settings = getSharedPreferences("WeiBo", 0); key = settings.getString("key", ""); secret = settings.getString("secret", ""); } if (key.equals("") || secret.equals("")) { Toast.makeText(this, "尚未登录", Toast.LENGTH_LONG).show(); login(); //跳转到浏览器登录 } } public void login(){ Weibo weibo = OAuthConstant.getInstance().getWeibo(); RequestToken requestToken; try { requestToken =weibo.getOAuthRequestToken("sina://weibo"); //为了避免与同类应用冲突,还是自己改下URI吧 Uri uri2 = Uri.parse(requestToken.getAuthenticationURL()+ "&from=xweibo"); OAuthConstant.getInstance().setRequestToken(requestToken); startActivity(new Intent(Intent.ACTION_VIEW, uri2)); } catch (WeiboException e) { e.printStackTrace(); } } }
  发送图片需要导入commons-httpclient-3.0.1.jar,否则会报启动错误,当然是weibo4android-1.2.@ >0.jar 是不可接受的 Less
  以上是Java使用新浪微博API通过账号密码登录微博实例的详细内容。更多详情请关注html中文网站其他相关文章! 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博API研究研究实现发布微博功能的授权认证)
  本文文章主要介绍Java使用新浪微博API通过账号密码登录微博的例子。一般来说,第三方app使用OAuth授权鉴权,然后跳转。账号方式更自由,有需要的朋友可以参考
  今天发表了一篇关于新浪微博API的研究,现在已经实现了发布微博的功能,包括带图片的微博。为安全起见,新浪微博API不提供微博账号密码登录功能。相反,它使用 OAuth 授权。用户通过浏览器访问新浪网站进行登录,登录成功后,浏览器将key和secret返回给程序。
  主文件:
  一个登录按钮、一个输入框和一个发布按钮
  因为要接收浏览器返回的数据,所以AndroidManifest.xml在注册Activity的时候必须添加一个Intent-Filter
  意图过滤器必须分两部分编写。如果写在一起,就不能启动。
  为简单起见,直接复制新浪示例中的OAuthConstant类:
   package weibo4android.androidexamples; import weibo4android.Weibo; import weibo4android.http.AccessToken; import weibo4android.http.RequestToken; public class OAuthConstant { private static Weibo weibo=null; private static OAuthConstant instance=null; private RequestToken requestToken; private AccessToken accessToken; private String token; private String tokenSecret; private OAuthConstant(){}; public static synchronized OAuthConstant getInstance(){ if(instance==null) instance= new OAuthConstant(); return instance; } public Weibo getWeibo(){ if(weibo==null) weibo= new Weibo(); return weibo; } public AccessToken getAccessToken() { return accessToken; } public void setAccessToken(AccessToken accessToken) { this.accessToken = accessToken; this.token=accessToken.getToken(); this.tokenSecret=accessToken.getTokenSecret(); } public RequestToken getRequestToken() { return requestToken; } public void setRequestToken(RequestToken requestToken) { this.requestToken = requestToken; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public String getTokenSecret() { return tokenSecret; } public void setTokenSecret(String tokenSecret) { this.tokenSecret = tokenSecret; } }
  接下来是最关键的主程序:
   package com.pocketdigi.weibo; import java.io.File; import weibo4android.Weibo; import weibo4android.WeiboException; import weibo4android.http.AccessToken; import weibo4android.http.RequestToken; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Main extends Activity { /** Called when the activity is first created. */ String key = "", secret = ""; Button login,send; EditText status; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); System.setProperty("weibo4j.oauth.consumerKey", "3997936609"); System.setProperty("weibo4j.oauth.consumerSecret", "8bc9e3bfd6ae8e3b2b8bda9079918950"); //设置在新浪应用开放平台申请的应用的key和secret login=(Button)findViewById(R.id.login); send=(Button)findViewById(R.id.send); status=(EditText)findViewById(R.id.status); login.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub login(); //登录 }}); send.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub String text=String.valueOf(status.getText()); Weibo weibo = new Weibo(); weibo.setToken(key,secret); try { //weibo.updateStatus(text); //只发文字 File f=new File("/sdcard/wallpaper/129567208597069400.jpg"); weibo.uploadStatus(text,f ); //发文字+图片,这里需要导入commons-httpclient-3.0.1.jar,自己网上下 //在实际项目上,最好放Thread里,因为按下去的时候按钮会卡 } catch (WeiboException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); //启动时执行检测是否来自网页登录返回 //如果是,获取key和secret //否则读取SharedPreferences //若得不到key和secret,直接跳转登录 Uri uri = this.getIntent().getData(); if (uri != null) { //如果是浏览器返回 try { RequestToken requestToken = OAuthConstant.getInstance() .getRequestToken(); AccessToken accessToken = requestToken.getAccessToken(uri .getQueryParameter("oauth_verifier")); OAuthConstant.getInstance().setAccessToken(accessToken); // 保存 Editor sharedata = getSharedPreferences("WeiBo", 0).edit(); sharedata.putString("key", accessToken.getToken()); sharedata.putString("secret", accessToken.getTokenSecret()); sharedata.commit(); key = accessToken.getToken(); secret = accessToken.getTokenSecret(); } catch (WeiboException e) { e.printStackTrace(); } } else { //如果是用户自己启动 SharedPreferences settings = getSharedPreferences("WeiBo", 0); key = settings.getString("key", ""); secret = settings.getString("secret", ""); } if (key.equals("") || secret.equals("")) { Toast.makeText(this, "尚未登录", Toast.LENGTH_LONG).show(); login(); //跳转到浏览器登录 } } public void login(){ Weibo weibo = OAuthConstant.getInstance().getWeibo(); RequestToken requestToken; try { requestToken =weibo.getOAuthRequestToken("sina://weibo"); //为了避免与同类应用冲突,还是自己改下URI吧 Uri uri2 = Uri.parse(requestToken.getAuthenticationURL()+ "&from=xweibo"); OAuthConstant.getInstance().setRequestToken(requestToken); startActivity(new Intent(Intent.ACTION_VIEW, uri2)); } catch (WeiboException e) { e.printStackTrace(); } } }
  发送图片需要导入commons-httpclient-3.0.1.jar,否则会报启动错误,当然是weibo4android-1.2.@ >0.jar 是不可接受的 Less
  以上是Java使用新浪微博API通过账号密码登录微博实例的详细内容。更多详情请关注html中文网站其他相关文章!

使用新浪微博开放平台api同步微博内容至自己网站( 更好预置多个云服务系统权限管理专家的工作流程(组图))

网站优化优采云 发表了文章 • 0 个评论 • 124 次浏览 • 2021-10-23 20:13 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(
更好预置多个云服务系统权限管理专家的工作流程(组图))
  
  统一身份认证服务(Identity and Access Management,简称IAM)为您打造专属的权限管理专家。帮助您为每个员工创建独立的用户名和密码,避免密码共享带来的安全风险。同时,合理配置这些资源的使用权限,满足您对用户权限的安全管控要求。为了帮助您更好地管理权限,IAM预设了多个云服务系统权限。如果系统权限不能满足您的要求,您还可以创建自定义策略来确保精细的权限管理。华为云权限管理,我们专业!
  下面通过一个简单的例子,详细向您展示如何在权限管理专家的帮助下更好地管理和控制华为云资源。
  A公司的账户拥有多个华为云资源,图1所示的各个职能团队需要被授予相应的资源使用权限。在IAM中,为每个团队设置权限,以实现团队之间的权限分离,员工各司其职。
  图1 A公司人员结构
  
  表1 权限分布
  
  权限管理流程
  了解了公司架构和各职能团队需要配置的权限后,就该让权限管理专家上台了。下面以爱丽丝作为安全管理团队的一员,配置“华北-北京4”区域的Anti-DDoS和AAD服务的所有执行权限为例,给大家展示一个权限管理专家的工作流程.
  图1 权限管理流程图
  
  第一步:创建用户组并授权
  据了解,该公司有五个职能团队,管理组(admin)由IAM预设。管理组中的用户可以帮助该帐户创建其他用户组。以下是我们的管理员帮助创建用户组并对其进行授权。
  管理员进入统一身份认证控制台,点击左侧导航栏中的“用户组”>页面右上角的“创建用户组”,输入用户组名称为“安全管理团队”和描述(可选) ),点击“确定”完成用户组的创建。
  
  在上图所示的用户组列表中,点击用户组名称右侧的“权限配置”,进入用户组详情页面。单击“权限管理”选项卡下的“配置权限”。
  
  在用户组授权页面,选择权限范围“区域项目>cn-north-4[华北-北京四]”,选择需要的权限“防DDoS管理员”和“CAD管理员”,点击“确定”完成用户组授权。
  
  用户组创建并授权后,您可以在用户组列表中查看创建的用户组,在用户组详情页面查看授予用户组的权限。
  第 2 步:创建 IAM 用户并加入用户组
  创建用户组后,管理员需要为每个员工创建一个IAM用户,并将其添加到相应的用户组中。将用户添加到用户组,该用户将拥有该用户组的权限。这个过程是对用户进行授权。
  管理员进入统一身份认证控制台,点击左侧导航栏中的“用户”>页面右上角的“创建用户”。
  
  输入用户名“Alice”、邮箱地址、手机号码(可选)、描述(可选),选择“华为云管理控制台访问”>“首次登录时设置”,开启登录保护,点击“下一步”。
  
  阐明:
  如果开发团队的Keith和Kelly需要通过API调用访问华为云,访问方式可以是“程序化访问”。想了解更多请戳→
  3. 选择“安全管理团队”,点击“创建用户”,完成IAM用户授权。
  第 3 步:IAM 用户登录
  完成以上步骤后,Alice就拥有了自己的华为云专属通行证,只允许她访问“华北-北京4”区域的Anti-DDoS和AAD服务。最后,请爱丽丝登录华为云,开启华为云的精彩之旅!
  在华为云登录页面,点击登录下的“IAM用户登录”。在“IAM用户登录”页面,输入账号名、用户名/邮箱和密码,点击“登录”登录华为云。
  
  切换区域为【华北-北京4】,Alice可以访问DDoS服务(Anti-DDoS)、DDoS高防服务(AAD),为项目安全保驾护航。
  
  至此,正确的管理专家能否“离开”?不,他会一直坚守岗位!
  当您需要更改用户权限时,您可以通过用户组添加/删除用户。
  当您需要更改用户组权限时,您可以这样做。
  当需要取消用户组的权限时,可以通过删除该用户组的权限来实现。
  解决方案多于问题
  如果管理员在IAM控制台为IAM用户设置了权限,IAM用户登录后发现权限没有生效,请继续往下看。
  可能原因一:管理员授予的权限有依赖角色,且依赖角色没有同步设置,导致权限不生效。角色的依赖请参考:系统权限。
  解决方案:重新授权依赖角色。方法请参考:依赖角色授权方法。
  可能原因2:管理员授权用户组后忘记将IAM用户添加到用户组。
  解决方案:将 IAM 用户添加到用户组。请参考方法:将用户添加到用户组。
  可能原因3:区域级业务,未在相应区域进行授权。
  解决方法:在对IAM所在的用户组进行授权时,选择对应的区域。请参考方法:创建用户组并授权。
  可能原因4:IAM用户登录控制台后没有切换到授权区域。
  解决方法:请切换到授权区域。请参阅:。
  欢迎观看更多IAM资讯 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(
更好预置多个云服务系统权限管理专家的工作流程(组图))
  
  统一身份认证服务(Identity and Access Management,简称IAM)为您打造专属的权限管理专家。帮助您为每个员工创建独立的用户名和密码,避免密码共享带来的安全风险。同时,合理配置这些资源的使用权限,满足您对用户权限的安全管控要求。为了帮助您更好地管理权限,IAM预设了多个云服务系统权限。如果系统权限不能满足您的要求,您还可以创建自定义策略来确保精细的权限管理。华为云权限管理,我们专业!
  下面通过一个简单的例子,详细向您展示如何在权限管理专家的帮助下更好地管理和控制华为云资源。
  A公司的账户拥有多个华为云资源,图1所示的各个职能团队需要被授予相应的资源使用权限。在IAM中,为每个团队设置权限,以实现团队之间的权限分离,员工各司其职。
  图1 A公司人员结构
  
  表1 权限分布
  
  权限管理流程
  了解了公司架构和各职能团队需要配置的权限后,就该让权限管理专家上台了。下面以爱丽丝作为安全管理团队的一员,配置“华北-北京4”区域的Anti-DDoS和AAD服务的所有执行权限为例,给大家展示一个权限管理专家的工作流程.
  图1 权限管理流程图
  
  第一步:创建用户组并授权
  据了解,该公司有五个职能团队,管理组(admin)由IAM预设。管理组中的用户可以帮助该帐户创建其他用户组。以下是我们的管理员帮助创建用户组并对其进行授权。
  管理员进入统一身份认证控制台,点击左侧导航栏中的“用户组”>页面右上角的“创建用户组”,输入用户组名称为“安全管理团队”和描述(可选) ),点击“确定”完成用户组的创建。
  
  在上图所示的用户组列表中,点击用户组名称右侧的“权限配置”,进入用户组详情页面。单击“权限管理”选项卡下的“配置权限”。
  
  在用户组授权页面,选择权限范围“区域项目>cn-north-4[华北-北京四]”,选择需要的权限“防DDoS管理员”和“CAD管理员”,点击“确定”完成用户组授权。
  
  用户组创建并授权后,您可以在用户组列表中查看创建的用户组,在用户组详情页面查看授予用户组的权限。
  第 2 步:创建 IAM 用户并加入用户组
  创建用户组后,管理员需要为每个员工创建一个IAM用户,并将其添加到相应的用户组中。将用户添加到用户组,该用户将拥有该用户组的权限。这个过程是对用户进行授权。
  管理员进入统一身份认证控制台,点击左侧导航栏中的“用户”>页面右上角的“创建用户”。
  
  输入用户名“Alice”、邮箱地址、手机号码(可选)、描述(可选),选择“华为云管理控制台访问”>“首次登录时设置”,开启登录保护,点击“下一步”。
  
  阐明:
  如果开发团队的Keith和Kelly需要通过API调用访问华为云,访问方式可以是“程序化访问”。想了解更多请戳→
  3. 选择“安全管理团队”,点击“创建用户”,完成IAM用户授权。
  第 3 步:IAM 用户登录
  完成以上步骤后,Alice就拥有了自己的华为云专属通行证,只允许她访问“华北-北京4”区域的Anti-DDoS和AAD服务。最后,请爱丽丝登录华为云,开启华为云的精彩之旅!
  在华为云登录页面,点击登录下的“IAM用户登录”。在“IAM用户登录”页面,输入账号名、用户名/邮箱和密码,点击“登录”登录华为云。
  
  切换区域为【华北-北京4】,Alice可以访问DDoS服务(Anti-DDoS)、DDoS高防服务(AAD),为项目安全保驾护航。
  
  至此,正确的管理专家能否“离开”?不,他会一直坚守岗位!
  当您需要更改用户权限时,您可以通过用户组添加/删除用户。
  当您需要更改用户组权限时,您可以这样做。
  当需要取消用户组的权限时,可以通过删除该用户组的权限来实现。
  解决方案多于问题
  如果管理员在IAM控制台为IAM用户设置了权限,IAM用户登录后发现权限没有生效,请继续往下看。
  可能原因一:管理员授予的权限有依赖角色,且依赖角色没有同步设置,导致权限不生效。角色的依赖请参考:系统权限。
  解决方案:重新授权依赖角色。方法请参考:依赖角色授权方法。
  可能原因2:管理员授权用户组后忘记将IAM用户添加到用户组。
  解决方案:将 IAM 用户添加到用户组。请参考方法:将用户添加到用户组。
  可能原因3:区域级业务,未在相应区域进行授权。
  解决方法:在对IAM所在的用户组进行授权时,选择对应的区域。请参考方法:创建用户组并授权。
  可能原因4:IAM用户登录控制台后没有切换到授权区域。
  解决方法:请切换到授权区域。请参阅:。
  欢迎观看更多IAM资讯

使用新浪微博开放平台api同步微博内容至自己网站(本地测试阶段如何申请后面讲述WAP网站提供两种验证方式)

网站优化优采云 发表了文章 • 0 个评论 • 69 次浏览 • 2021-10-23 02:11 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(本地测试阶段如何申请后面讲述WAP网站提供两种验证方式)
  新浪微博网站接入应用教程(含本地测试)织梦无忧站长随笔2020-09-21 13:59
  总结:进入新浪微博开放平台,用账号登录。点击【网站访问】或在顶部菜单中选择【微连接】进入网站访问页面。左侧提供了一系列开放平台的公共组件,可以在你的网站中直接引用。申请微连接appKey,点击【开始访问】按钮。这里
  进入新浪微博开放平台,使用账号登录。
  
  点击【网站访问】或在顶部菜单中选择【微连接】进入网站访问页面。
  
  左侧提供了一系列开放平台的公共组件,可以在你的网站中直接引用。
  
  申请微连接appKey,点击【开始访问】按钮。
  
  这里有两点需要注意:
  1 以这种方式申请appKey,前提是你的网站必须使用过域名并且在互联网上运行。如果您处于本地测试阶段,此方法将不起作用。如何申请本地测试阶段将在后面介绍。
  2网站提供了两种验证方式来验证您是否拥有网站的管理员权限。请注意这两种方法之间的区别。
  没有自动重定向的网站
  
  具有自动重定向功能的网站或 WAP 站点
  
  将验证码添加到您的网站首页后,点击下方的【验证并添加】按钮。按照提示操作。
  注意:如果此步骤不成功,请参考新浪提供的提示信息仔细分析。如果实在找不到问题,不妨试试以上两种验证方式。
  从这一步开始,如何在本地调试阶段应用。
  因为没有本地调试的域名,直接访问网站是不行的。需要使用web应用来实现本地调试。
  很多人在申请的时候都找不到web应用的选项。这是一个解释:
  (1)开放平台首页,直接点击【微连接】菜单。
  
  注意不要在【微连接】菜单下点击网站上的应用,点击网站上的应用后的页面不会是同一个页面。
  
  进入页面如下图:
  
  (2)这时候点击【创建应用】按钮,会弹出各种应用类型,然后会出现web应用。
  
  点击【Web应用】进入应用页面。
  
  这里的申请地址可以填写IP地址,方便我们测试。
  
  创建 Web 应用程序后,还没有结束。点击【管理中心】进入我们刚刚申请的应用。点击左侧申请信息中的基本信息。
  
  点击右侧编辑,注意下图中高亮的地方。
  
  申请地址是指微博发布时显示的来源地址(不通过将无法正确显示)。
  安全域名是必须的,因为新浪微博的Api需要通过域名访问,否则会报错。所以下一步是关键。
  设置本地环境域名映射。
  (1)在操作系统hosts文件中添加本地域名映射。
  
  (2)在上述安全域名中配置本地自定义域名。
  点击【高级信息】进行设置。
  
  授权设置是调用api成功后返回的页面。
  安全设置指定应用程序部署的 IP 地址。
  至此,新浪微博appKey申请成功,可以开始自己的本地调试路径了。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(本地测试阶段如何申请后面讲述WAP网站提供两种验证方式)
  新浪微博网站接入应用教程(含本地测试)织梦无忧站长随笔2020-09-21 13:59
  总结:进入新浪微博开放平台,用账号登录。点击【网站访问】或在顶部菜单中选择【微连接】进入网站访问页面。左侧提供了一系列开放平台的公共组件,可以在你的网站中直接引用。申请微连接appKey,点击【开始访问】按钮。这里
  进入新浪微博开放平台,使用账号登录。
  
  点击【网站访问】或在顶部菜单中选择【微连接】进入网站访问页面。
  
  左侧提供了一系列开放平台的公共组件,可以在你的网站中直接引用。
  
  申请微连接appKey,点击【开始访问】按钮。
  
  这里有两点需要注意:
  1 以这种方式申请appKey,前提是你的网站必须使用过域名并且在互联网上运行。如果您处于本地测试阶段,此方法将不起作用。如何申请本地测试阶段将在后面介绍。
  2网站提供了两种验证方式来验证您是否拥有网站的管理员权限。请注意这两种方法之间的区别。
  没有自动重定向的网站
  
  具有自动重定向功能的网站或 WAP 站点
  
  将验证码添加到您的网站首页后,点击下方的【验证并添加】按钮。按照提示操作。
  注意:如果此步骤不成功,请参考新浪提供的提示信息仔细分析。如果实在找不到问题,不妨试试以上两种验证方式。
  从这一步开始,如何在本地调试阶段应用。
  因为没有本地调试的域名,直接访问网站是不行的。需要使用web应用来实现本地调试。
  很多人在申请的时候都找不到web应用的选项。这是一个解释:
  (1)开放平台首页,直接点击【微连接】菜单。
  
  注意不要在【微连接】菜单下点击网站上的应用,点击网站上的应用后的页面不会是同一个页面。
  
  进入页面如下图:
  
  (2)这时候点击【创建应用】按钮,会弹出各种应用类型,然后会出现web应用。
  
  点击【Web应用】进入应用页面。
  
  这里的申请地址可以填写IP地址,方便我们测试。
  
  创建 Web 应用程序后,还没有结束。点击【管理中心】进入我们刚刚申请的应用。点击左侧申请信息中的基本信息。
  
  点击右侧编辑,注意下图中高亮的地方。
  
  申请地址是指微博发布时显示的来源地址(不通过将无法正确显示)。
  安全域名是必须的,因为新浪微博的Api需要通过域名访问,否则会报错。所以下一步是关键。
  设置本地环境域名映射。
  (1)在操作系统hosts文件中添加本地域名映射。
  
  (2)在上述安全域名中配置本地自定义域名。
  点击【高级信息】进行设置。
  
  授权设置是调用api成功后返回的页面。
  安全设置指定应用程序部署的 IP 地址。
  至此,新浪微博appKey申请成功,可以开始自己的本地调试路径了。

使用新浪微博开放平台api同步微博内容至自己网站( 利用PHP进行新浪微博API开发的内容进行一个整理和说明)

网站优化优采云 发表了文章 • 0 个评论 • 68 次浏览 • 2021-10-23 02:08 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(
利用PHP进行新浪微博API开发的内容进行一个整理和说明)
  新浪微博API开发用户授权介绍(PHP基础)
  更新时间:2011-09-25 22:52:37 作者:
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。整理和说明内容
  现在玩微博的人越来越多,微博上的第三方应用开​​发也越来越多。偶然接触到新浪微博API开发。新浪微博API开发资源比较大。新浪微博为开发者提供了一个平台。网站为: 收录新浪微博开发的综合信息,包括开发者的使用和介绍、各种语言的API功能介绍文档、SDK等资料。.
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。内容组织和解释,
  新浪微博API开发前的准备
  首先到新浪微博开放平台下载基于PHP的SDK开发包。下载地址为:
  下载完成后放到自己的开发环境中解压。演示程序也包括在内。我们可以参考它的示例程序进行编写。
  新浪微博API开发最重要的用户授权流程
  事实上,开发过程中的很多问题都集中在用户授权阶段。我开发的第三方应用使用的是OAuth授权。OAuth授权流程在新浪微博开放平台上有非常清晰完整的介绍。我们你可以看看。这里我将从示例开发的角度进行介绍和说明。
  1.首先获取未授权的Request Token
  复制代码代码如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o->getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我们需要在新浪微博开放平台注册一个账号,或者直接用我们的新浪微博账号登录,进入我的应用,然后按照提示创建我们自己的第三方应用。创建完成后,我们可以得到两个授权App Key和App Secret值,这两个值是我们应用开发的关键。
  获取到授权值后,我们可以通过上面的代码来获取未授权的Request Token值,该值会保存在$key数组变量中。
  2. 然后请求用户授权token
  复制代码代码如下:
  $_SESSION['keys'] = $keys;
  aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false,'');
  获取到未授权Request Token值后,我们就可以使用上面的代码准备去新浪微博授权页面进行授权了。$aurl 是授权链接页面。得到$aurl后,我们可以使用header()直接跳转到它。授权页面,然后用户输入新浪微博账号和密码进行授权。授权完成后会自动跳转回你最后一个参数设置的回调页面:这个链接可以设置为上一个页面,这样授权完成后会显示 再次自动跳转回来。
  需要说明的是,需要设置session key的值,下面获取的授权Access Token中需要该值。很多朋友可能会参考开放平台上的说明进行授权,但是发现总是报错。这通常是问题所在。您尚未设置会话的键值。当然,下面的Access Token的值是无法获取的。必须记住这一点。
  3.用户最后授权的Access Token
  复制代码代码如下:
  $o = new WeiboOAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o->getAccessToken( $_REQUEST['oauth_verifier']);
  回声($last_key['oauth_token']);
  以上代码最终获得了用户授权的Access Token。有两个值,它们存储在 $last_key 数组变量中。我们也可以看到最后两个参数是我们之前设置的session值。至此,基本完成。这是一个完整的新浪微博用户授权流程。
  授权完成后工作
  授权完成后,我们就可以开始调用新浪微博提供的各种API函数接口进行实际应用开发了。这里我简单介绍一下获取最新微博记录的界面。其他类似。
  获取新浪微博最新信息的API接口函数为:public_timeline(),示例代码如下:
  复制代码代码如下:
  //获取前20条最新更新的公众微博新闻
  $c = 新微博客户端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c->public_timeline();
  if ($msg === false || $msg === null){
  echo "发生错误";
  返回假;
  }
  if (isset($msg['error_code']) && isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error'] );
  返回假;
  }
  打印_r($msg);
  通常我们拿到用户授权的访问令牌值后,我们将它们保存在我们的用户表中,并与我们应用程序中的帐户相对应。之后我们就不用每次调用新浪微博的API接口都去。认证。
  上面的代码很简单,实例化WeiboClient对象,然后直接调用接口函数public_timeline获取返回的信息,如果没有错误。通常新浪微博api接口返回的数据格式一般是Json格式或者xml格式,而我们这里是用php开发的,使用Json格式的数据有先天优势,如果返回Json格式的数据,使用php 函数 json_decode() 可以直接转换成 PHP 常用的数组格式。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(
利用PHP进行新浪微博API开发的内容进行一个整理和说明)
  新浪微博API开发用户授权介绍(PHP基础)
  更新时间:2011-09-25 22:52:37 作者:
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。整理和说明内容
  现在玩微博的人越来越多,微博上的第三方应用开​​发也越来越多。偶然接触到新浪微博API开发。新浪微博API开发资源比较大。新浪微博为开发者提供了一个平台。网站为: 收录新浪微博开发的综合信息,包括开发者的使用和介绍、各种语言的API功能介绍文档、SDK等资料。.
  在开发和学习的过程中,感觉虽然不是太难,但还是有一些问题需要大家注意。今天在开发学习的过程中,简单的用PHP开发了新浪微博API。内容组织和解释,
  新浪微博API开发前的准备
  首先到新浪微博开放平台下载基于PHP的SDK开发包。下载地址为:
  下载完成后放到自己的开发环境中解压。演示程序也包括在内。我们可以参考它的示例程序进行编写。
  新浪微博API开发最重要的用户授权流程
  事实上,开发过程中的很多问题都集中在用户授权阶段。我开发的第三方应用使用的是OAuth授权。OAuth授权流程在新浪微博开放平台上有非常清晰完整的介绍。我们你可以看看。这里我将从示例开发的角度进行介绍和说明。
  1.首先获取未授权的Request Token
  复制代码代码如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o->getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我们需要在新浪微博开放平台注册一个账号,或者直接用我们的新浪微博账号登录,进入我的应用,然后按照提示创建我们自己的第三方应用。创建完成后,我们可以得到两个授权App Key和App Secret值,这两个值是我们应用开发的关键。
  获取到授权值后,我们可以通过上面的代码来获取未授权的Request Token值,该值会保存在$key数组变量中。
  2. 然后请求用户授权token
  复制代码代码如下:
  $_SESSION['keys'] = $keys;
  aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false,'');
  获取到未授权Request Token值后,我们就可以使用上面的代码准备去新浪微博授权页面进行授权了。$aurl 是授权链接页面。得到$aurl后,我们可以使用header()直接跳转到它。授权页面,然后用户输入新浪微博账号和密码进行授权。授权完成后会自动跳转回你最后一个参数设置的回调页面:这个链接可以设置为上一个页面,这样授权完成后会显示 再次自动跳转回来。
  需要说明的是,需要设置session key的值,下面获取的授权Access Token中需要该值。很多朋友可能会参考开放平台上的说明进行授权,但是发现总是报错。这通常是问题所在。您尚未设置会话的键值。当然,下面的Access Token的值是无法获取的。必须记住这一点。
  3.用户最后授权的Access Token
  复制代码代码如下:
  $o = new WeiboOAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o->getAccessToken( $_REQUEST['oauth_verifier']);
  回声($last_key['oauth_token']);
  以上代码最终获得了用户授权的Access Token。有两个值,它们存储在 $last_key 数组变量中。我们也可以看到最后两个参数是我们之前设置的session值。至此,基本完成。这是一个完整的新浪微博用户授权流程。
  授权完成后工作
  授权完成后,我们就可以开始调用新浪微博提供的各种API函数接口进行实际应用开发了。这里我简单介绍一下获取最新微博记录的界面。其他类似。
  获取新浪微博最新信息的API接口函数为:public_timeline(),示例代码如下:
  复制代码代码如下:
  //获取前20条最新更新的公众微博新闻
  $c = 新微博客户端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c->public_timeline();
  if ($msg === false || $msg === null){
  echo "发生错误";
  返回假;
  }
  if (isset($msg['error_code']) && isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error'] );
  返回假;
  }
  打印_r($msg);
  通常我们拿到用户授权的访问令牌值后,我们将它们保存在我们的用户表中,并与我们应用程序中的帐户相对应。之后我们就不用每次调用新浪微博的API接口都去。认证。
  上面的代码很简单,实例化WeiboClient对象,然后直接调用接口函数public_timeline获取返回的信息,如果没有错误。通常新浪微博api接口返回的数据格式一般是Json格式或者xml格式,而我们这里是用php开发的,使用Json格式的数据有先天优势,如果返回Json格式的数据,使用php 函数 json_decode() 可以直接转换成 PHP 常用的数组格式。

使用新浪微博开放平台api同步微博内容至自己网站(注册新浪weibo允许第三方以应用的方式发布微博(组图))

网站优化优采云 发表了文章 • 0 个评论 • 84 次浏览 • 2021-10-22 15:10 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(注册新浪weibo允许第三方以应用的方式发布微博(组图))
  前言
  前不久萌生了学python的念头,于是为了练手的目的为微博做了这样一个小工具。
  登记
  新浪微博允许第三方以应用的形式发布微博,所以我们首先要做的就是通过新浪微博开放平台注册一个应用:
  
  weibo_open
  打开上述平台的页面,用微博账号登录,然后点击立即访问开始注册自己的应用,按照提示操作即可。以下是我自己创建的应用程序,名为:
  
  应用程序
  在您个人应用的应用信息-基本信息-基本应用信息中找到您的App Key和App Secret。并在高级信息中设置自己的授权回调页面(所谓授权回调页面是指个人应用通过微博账号授权后的跳转页面,设置没有问题,这里我设置为个人微博主页)。
  授权获取代码
  看了新浪的SDK,很多人可能会选择对应的python SDK。实际上,这是不必要的。界面变得更加复杂。我们在这里不使用他的界面。
  通常,通过微博界面发送微博的第三方应用需要用户授权。我想你以前也做过同样的事情,那么哪个授权页面是?
  def get_auth_url(client_id, redirect_uri):
return '%s%s?%s' % ('https://api.weibo.com/oauth2/', 'authorize',
_encode_params(client_id=client_id,
response_type='code',
redirect_uri=redirect_uri))
  client_id是你的app_key,redirect_uri是上一步填写的授权回调页面地址,复制生成的链接到浏览器打开,输入你的微博账号进行授权。
  
  授权
  授权成功后,浏览器会跳转到我们设置的授权回调页面。在浏览器地址栏找到code字段,你就会得到授权码。
  获取令牌
  接下来,我们需要通过代码获取token。这个token是我们在微博上发帖的凭证:
  def get_access_token(app_key, app_secret, redirect_url):
#通过url_auth输入weibo账号进行登录
#从登录成功后的回调url获得code
url_auth = get_auth_url(app_key, redirect_url)
print('[get_access_token]' + url_auth)
code = input('Input code:')
url_get_token = "https://api.weibo.com/oauth2/access_token"
payload = {
"client_id":app_key,
"client_secret":app_secret,
"grant_type":"authorization_code",
"code":code,
"redirect_uri":redirect_url
}

#获取access_token
res = requests.post(url_get_token, data=payload)
resj = json.loads(res.text)
return resj['access_token']
  令牌只需要获取一次,令牌可以一直重复使用。有效期好像是5年。
  微博安全域名
  新浪微博要求通过应用界面发送的每一条微博内容都必须收录一个安全的域名字段。您需要在应用信息-基本信息-应用基本信息中配置安全域名。我设置了
  调用接口
  这里的安全域名依然使用自己的微博主页,包括:
  def share_weibo(text, img):
access_token = '你的token'
#安全域名,sina限制文本内容必须有此字段
safe_domain = 'https://weibo.com/5296864682/profile?topnav=1&wvr=6'
url_share = 'https://api.weibo.com/2/statuses/share.json'

payload = {
'access_token':access_token,
'status':text + ' ' + safe_domain
}
if img :
files = {
"pic":img
}
res = requests.post(url_share, data = payload, files = files)
else :
res = requests.post(url_share, data = payload)
return res
  测试
  编写测试代码:
  if __name__ == '__main__':
f = open(r"./share.jpeg", "rb")
text = input('Input text:')
res = share_weibo(text, f)
f.close()
  跑:
  [root@localhost share_weibo]# py sina_weibo.py
Input text:hello sky
  成功发布图片微博:
  
  你好天空
  如果你想发布视频,很遗憾,新浪没有提供相应的界面。我们只能通过在文本中收录指向现有视频的链接来实现类似的效果。例如,要发布此视频:
  跑:
  [root@localhost share_weibo]# py sina_weibo.py
Input text:http://t.cn/Ail9eamb%3Fm%3D439 ... 64682
  成功发送视频的微博:
  
  视频
  你可以在我的微博上看到刚刚发送的视频。
  结束语
  还有一些接口比如注释,大家可以自己测试一下,在接口管理里面可以看到相应的介绍。
  附上源代码: 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(注册新浪weibo允许第三方以应用的方式发布微博(组图))
  前言
  前不久萌生了学python的念头,于是为了练手的目的为微博做了这样一个小工具。
  登记
  新浪微博允许第三方以应用的形式发布微博,所以我们首先要做的就是通过新浪微博开放平台注册一个应用:
  
  weibo_open
  打开上述平台的页面,用微博账号登录,然后点击立即访问开始注册自己的应用,按照提示操作即可。以下是我自己创建的应用程序,名为:
  
  应用程序
  在您个人应用的应用信息-基本信息-基本应用信息中找到您的App Key和App Secret。并在高级信息中设置自己的授权回调页面(所谓授权回调页面是指个人应用通过微博账号授权后的跳转页面,设置没有问题,这里我设置为个人微博主页)。
  授权获取代码
  看了新浪的SDK,很多人可能会选择对应的python SDK。实际上,这是不必要的。界面变得更加复杂。我们在这里不使用他的界面。
  通常,通过微博界面发送微博的第三方应用需要用户授权。我想你以前也做过同样的事情,那么哪个授权页面是?
  def get_auth_url(client_id, redirect_uri):
return '%s%s?%s' % ('https://api.weibo.com/oauth2/', 'authorize',
_encode_params(client_id=client_id,
response_type='code',
redirect_uri=redirect_uri))
  client_id是你的app_key,redirect_uri是上一步填写的授权回调页面地址,复制生成的链接到浏览器打开,输入你的微博账号进行授权。
  
  授权
  授权成功后,浏览器会跳转到我们设置的授权回调页面。在浏览器地址栏找到code字段,你就会得到授权码。
  获取令牌
  接下来,我们需要通过代码获取token。这个token是我们在微博上发帖的凭证:
  def get_access_token(app_key, app_secret, redirect_url):
#通过url_auth输入weibo账号进行登录
#从登录成功后的回调url获得code
url_auth = get_auth_url(app_key, redirect_url)
print('[get_access_token]' + url_auth)
code = input('Input code:')
url_get_token = "https://api.weibo.com/oauth2/access_token"
payload = {
"client_id":app_key,
"client_secret":app_secret,
"grant_type":"authorization_code",
"code":code,
"redirect_uri":redirect_url
}

#获取access_token
res = requests.post(url_get_token, data=payload)
resj = json.loads(res.text)
return resj['access_token']
  令牌只需要获取一次,令牌可以一直重复使用。有效期好像是5年。
  微博安全域名
  新浪微博要求通过应用界面发送的每一条微博内容都必须收录一个安全的域名字段。您需要在应用信息-基本信息-应用基本信息中配置安全域名。我设置了
  调用接口
  这里的安全域名依然使用自己的微博主页,包括:
  def share_weibo(text, img):
access_token = '你的token'
#安全域名,sina限制文本内容必须有此字段
safe_domain = 'https://weibo.com/5296864682/profile?topnav=1&wvr=6'
url_share = 'https://api.weibo.com/2/statuses/share.json'

payload = {
'access_token':access_token,
'status':text + ' ' + safe_domain
}
if img :
files = {
"pic":img
}
res = requests.post(url_share, data = payload, files = files)
else :
res = requests.post(url_share, data = payload)
return res
  测试
  编写测试代码:
  if __name__ == '__main__':
f = open(r"./share.jpeg", "rb")
text = input('Input text:')
res = share_weibo(text, f)
f.close()
  跑:
  [root@localhost share_weibo]# py sina_weibo.py
Input text:hello sky
  成功发布图片微博:
  
  你好天空
  如果你想发布视频,很遗憾,新浪没有提供相应的界面。我们只能通过在文本中收录指向现有视频的链接来实现类似的效果。例如,要发布此视频:
  跑:
  [root@localhost share_weibo]# py sina_weibo.py
Input text:http://t.cn/Ail9eamb%3Fm%3D439 ... 64682
  成功发送视频的微博:
  
  视频
  你可以在我的微博上看到刚刚发送的视频。
  结束语
  还有一些接口比如注释,大家可以自己测试一下,在接口管理里面可以看到相应的介绍。
  附上源代码:

使用新浪微博开放平台api同步微博内容至自己网站(有时候整合新浪微博的独立博客是怎么做的??)

网站优化优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2021-10-21 16:01 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(有时候整合新浪微博的独立博客是怎么做的??)
  随着新浪微博用户越来越多,我们有时会考虑将新浪微博整合到我们自己的网站中。例如,我目前的独立博客。
  我博客的整合主要是这几个方面:我写了一篇文章,同时发到微博。同时,用户可以用自己的微博账号登录,可以选择将文章的评论同步到文章的微博。此外,用户可以选择是否将博客消息同步到新浪微博。
  新浪微博开放平台地址在这里。文档地址在这里。
  首先要涉及的问题是用户使用新浪微博账号登录的问题,即授权机制。有两种基本方法:
  OAuth Basic auth(需要强调的是,微博开放平台将于6月1日正式停止支持Basic Auth,因此不讨论这种方式。实际上,要求用户名和密码的方式本质上是不安全的。)
  官方 OAuth 新浪文档在这里。想了解OAuth技术说明的可以访问项目主页。
  其实OAuth的过程还是很简单的。大致如下:
  从 API 调用中获取请求令牌。将用户重定向到授权页面(auth url)。用户输入用户名和密码完成授权。重定向到 Callback_url。将请求令牌交换到新浪微博以获取访问令牌。结束。
  大致了解了OAuth的原理后,既然是集成到Django,自然需要下载Python版的微博SDK。
  但是,在一切开始之前,您必须从新浪微博申请。申请地址在这里。这里需要强调的是,以后的应用需要申请审核,因为只有审核通过后,才能在源中显示个性化的应用名称。因此,在申请时,要注意申请介绍信息的完整性和正确的申请分类。(在这个例子中,我们的分类是合作网站。)
  申请完成后,您将获得您的申请的App Key和App Secret。
  回到授权用户登录的话题。要允许新浪微博账号访问,首先我们需要在urlpatterns中添加几个URL。如下:
  urlpatterns = patterns('projectname.appname.views', url(r'^log/$', 'login', name='log'), url(r'^logincheck/$', 'login_check', name='logcheck'), url(r'^logout/$', 'logout', name='logout'), )
  接下来,我们启动视图文件。代码:
  #!/usr/bin/env python # -*- coding: utf-8 -*- """ 基于django的新浪微博oauth views 需要django的session支持 """ from django.http import HttpResponseRedirect from weibopy.auth import OAuthHandler, WeibopError from weibopy import oauth consumer_key = '' # 设置你申请的appkey consumer_secret = '' # 设置你申请的appkey对于的secret class WebOAuthHandler(OAuthHandler): def get_authorization_url_with_callback(self, callback, signin_with_推ter=False): """Get the authorization URL to redirect the user""" try: # get the request token self.request_token = self._get_request_token() # build auth request and return as url if signin_with_推ter: url = self._get_oauth_url('authenticate') else: url = self._get_oauth_url('authorize') request = oauth.OAuthRequest.from_token_and_callback( token=self.request_token, callback=callback, http_url=url ) return request.to_url() except Exception, e: raise WeibopError(e) def _get_referer_url(request): referer_url = request.META.get('HTTP_REFERER', '/') host = request.META['HTTP_HOST'] if referer_url.startswith('http') and host not in referer_url: referer_url = '/' # 避免外站直接跳到登录页而发生跳转错误 return referer_url def _oauth(): """获取oauth认证类""" return WebOAuthHandler(consumer_key, consumer_secret) def login(request): # 保存最初的登录url,以便认证成功后跳转回来 back_to_url = _get_referer_url(request) request.session['login_back_to_url'] = back_to_url # 获取oauth认证url login_backurl = request.build_absolute_uri('/logincheck') auth_client = _oauth() auth_url = auth_client.get_authorization_url_with_callback(login_backurl) # 保存request_token,用户登录后需要使用它来获取access_token request.session['oauth_request_token'] = auth_client.request_token # 跳转到登录页面 return HttpResponseRedirect(auth_url) def login_check(request): """用户成功登录授权后,会回调此方法,获取access_token,完成授权""" # http://mk2.com/%3Foauth_token% ... 03896 verifier = request.GET.get('oauth_verifier', None) auth_client = _oauth() # 设置之前保存在session的request_token request_token = request.session['oauth_request_token'] del request.session['oauth_request_token'] auth_client.set_request_token(request_token.key, request_token.secret) access_token = auth_client.get_access_token(verifier) # 保存access_token,以后访问只需使用access_token即可 request.session['oauth_access_token'] = access_token # 跳转回最初登录前的页面 back_to_url = request.session.get('login_back_to_url', '/') return HttpResponseRedirect(back_to_url) def logout(request): """用户登出,直接删除access_token""" del request.session['oauth_access_token'] back_to_url = _get_referer_url(request) return HttpResponseRedirect(back_to_url)
  完成授权码后,接下来我们需要知道如何向新浪微博发送消息等操作。其实就是下载的sdk下exanples文件夹下的examples(没错,其实就是examples,这个是英文水平的,就不多说了)。基本上,您可以更改它并直接使用它。以oauthSetTokenUpdate.py为例,我们可以这样写:
  # -*- coding: utf-8 -*- from weibopy.auth import OAuthHandler from weibopy.api import API consumer_key= '应用的key' consumer_secret ='应用的App Secret' auth = OAuthHandler(consumer_key, consumer_secret) auth_url = auth.get_authorization_url() print 'Please authorize: ' + auth_url verifier = raw_input('PIN: ').strip() auth.get_access_token(verifier) api = API(auth) status = api.update_status(status='hello world', lat='12.3', long='45.6') # 注意status必须是UTF-8编码的字符串,经纬度是可以不写的 print status.id print status.text
  运行这个程序会提示一个URL链接,在浏览器中打开这个链接,并授予访问权限,你会得到一串PIN码。输入此 PIN 码,将发送一条推文,同时还会显示用户的访问令牌密钥和访问令牌秘密。
  但是,这是否有点太书呆子了?其实只要知道Access token key和Access token secret,我们就可以直接使用它们来创建API对象:
  # -*- coding: utf-8 -*- from weibopy.auth import OAuthHandler from weibopy.api import API consumer_key= '应用的key' consumer_secret ='应用的App Secret' token = '用户的Access token key' tokenSecret = '用户的Access token secret' auth = OAuthHandler(consumer_key, consumer_secret) auth.setToken(token, tokenSecret) api = API(auth) status = api.update_status(status='搞定收工~')
  这时候我们可以重构代码,写一个微博类来实现上述功能,实现一些api操作。
  class weibo(object): def __init__(self): self.consumer_key = consumer_key self.consumer_secret = consumer_secret def getAtt(self, key): try: return self.obj.__getattribute__(key) except Exception, e: print e return '' def getAttValue(self, obj, key): try: return obj.__getattribute__(key) except Exception, e: print e return '' def auth(self): self.auth = OAuthHandler(self.consumer_key, self.consumer_secret) auth_url = self.auth.get_authorization_url() print 'Please authorize: ' + auth_url verifier = raw_input('PIN: ').strip() self.auth.get_access_token(verifier) self.api = API(self.auth) def setToken(self, token, tokenSecret): self.auth = OAuthHandler(self.consumer_key, self.consumer_secret) self.auth.setToken(token, tokenSecret) self.api = API(self.auth) def update(self, message): message = message.encode("utf-8") status = self.api.update_status(status=message) self.obj = status id = self.getAtt("id") return id def destroy_status(self, id): status = self.api.destroy_status(id) self.obj = status id = self.getAtt("id") return id def comment(self, id, message): comment = self.api.comment(id=id, comment=message) self.obj = comment mid = self.getAtt("id") return mid def comment_destroy (self, mid): comment = self.api.comment_destroy(mid) self.obj = comment mid = self.getAtt("id") text = self.getAtt("text") return mid def repost(self, id, message): post = self.api.repost(id=id, status=message) self.obj = post mid = self.getAtt("id") return mid def get_username(self): if getattr(self, '_username', None) is None: self._username = self.auth.get_username() return self._username
  不知道读者是否还记得上面授权部分的代码。在login_check方法代码中,有这么一句。
  request.session['oauth_access_token'] = access_token
  授权用户的 access_token 已经存储在 session 变量中。因此,当用户授权完成后,我们可以直接使用session中存储的access_token,像这样:
  access_token = request.session.get('oauth_access_token', None) if access_token is not None: weibo_client = weibo() weibo_client.setToken(access_token.key, access_token.secret) weibo_client.update('全部完成~')
  在上面的例子中,只使用了部分 API。有关完整的 API 手册,请参阅此处。
  文章来源: 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(有时候整合新浪微博的独立博客是怎么做的??)
  随着新浪微博用户越来越多,我们有时会考虑将新浪微博整合到我们自己的网站中。例如,我目前的独立博客。
  我博客的整合主要是这几个方面:我写了一篇文章,同时发到微博。同时,用户可以用自己的微博账号登录,可以选择将文章的评论同步到文章的微博。此外,用户可以选择是否将博客消息同步到新浪微博。
  新浪微博开放平台地址在这里。文档地址在这里。
  首先要涉及的问题是用户使用新浪微博账号登录的问题,即授权机制。有两种基本方法:
  OAuth Basic auth(需要强调的是,微博开放平台将于6月1日正式停止支持Basic Auth,因此不讨论这种方式。实际上,要求用户名和密码的方式本质上是不安全的。)
  官方 OAuth 新浪文档在这里。想了解OAuth技术说明的可以访问项目主页。
  其实OAuth的过程还是很简单的。大致如下:
  从 API 调用中获取请求令牌。将用户重定向到授权页面(auth url)。用户输入用户名和密码完成授权。重定向到 Callback_url。将请求令牌交换到新浪微博以获取访问令牌。结束。
  大致了解了OAuth的原理后,既然是集成到Django,自然需要下载Python版的微博SDK。
  但是,在一切开始之前,您必须从新浪微博申请。申请地址在这里。这里需要强调的是,以后的应用需要申请审核,因为只有审核通过后,才能在源中显示个性化的应用名称。因此,在申请时,要注意申请介绍信息的完整性和正确的申请分类。(在这个例子中,我们的分类是合作网站。)
  申请完成后,您将获得您的申请的App Key和App Secret。
  回到授权用户登录的话题。要允许新浪微博账号访问,首先我们需要在urlpatterns中添加几个URL。如下:
  urlpatterns = patterns('projectname.appname.views', url(r'^log/$', 'login', name='log'), url(r'^logincheck/$', 'login_check', name='logcheck'), url(r'^logout/$', 'logout', name='logout'), )
  接下来,我们启动视图文件。代码:
  #!/usr/bin/env python # -*- coding: utf-8 -*- """ 基于django的新浪微博oauth views 需要django的session支持 """ from django.http import HttpResponseRedirect from weibopy.auth import OAuthHandler, WeibopError from weibopy import oauth consumer_key = '' # 设置你申请的appkey consumer_secret = '' # 设置你申请的appkey对于的secret class WebOAuthHandler(OAuthHandler): def get_authorization_url_with_callback(self, callback, signin_with_推ter=False): """Get the authorization URL to redirect the user""" try: # get the request token self.request_token = self._get_request_token() # build auth request and return as url if signin_with_推ter: url = self._get_oauth_url('authenticate') else: url = self._get_oauth_url('authorize') request = oauth.OAuthRequest.from_token_and_callback( token=self.request_token, callback=callback, http_url=url ) return request.to_url() except Exception, e: raise WeibopError(e) def _get_referer_url(request): referer_url = request.META.get('HTTP_REFERER', '/') host = request.META['HTTP_HOST'] if referer_url.startswith('http') and host not in referer_url: referer_url = '/' # 避免外站直接跳到登录页而发生跳转错误 return referer_url def _oauth(): """获取oauth认证类""" return WebOAuthHandler(consumer_key, consumer_secret) def login(request): # 保存最初的登录url,以便认证成功后跳转回来 back_to_url = _get_referer_url(request) request.session['login_back_to_url'] = back_to_url # 获取oauth认证url login_backurl = request.build_absolute_uri('/logincheck') auth_client = _oauth() auth_url = auth_client.get_authorization_url_with_callback(login_backurl) # 保存request_token,用户登录后需要使用它来获取access_token request.session['oauth_request_token'] = auth_client.request_token # 跳转到登录页面 return HttpResponseRedirect(auth_url) def login_check(request): """用户成功登录授权后,会回调此方法,获取access_token,完成授权""" # http://mk2.com/%3Foauth_token% ... 03896 verifier = request.GET.get('oauth_verifier', None) auth_client = _oauth() # 设置之前保存在session的request_token request_token = request.session['oauth_request_token'] del request.session['oauth_request_token'] auth_client.set_request_token(request_token.key, request_token.secret) access_token = auth_client.get_access_token(verifier) # 保存access_token,以后访问只需使用access_token即可 request.session['oauth_access_token'] = access_token # 跳转回最初登录前的页面 back_to_url = request.session.get('login_back_to_url', '/') return HttpResponseRedirect(back_to_url) def logout(request): """用户登出,直接删除access_token""" del request.session['oauth_access_token'] back_to_url = _get_referer_url(request) return HttpResponseRedirect(back_to_url)
  完成授权码后,接下来我们需要知道如何向新浪微博发送消息等操作。其实就是下载的sdk下exanples文件夹下的examples(没错,其实就是examples,这个是英文水平的,就不多说了)。基本上,您可以更改它并直接使用它。以oauthSetTokenUpdate.py为例,我们可以这样写:
  # -*- coding: utf-8 -*- from weibopy.auth import OAuthHandler from weibopy.api import API consumer_key= '应用的key' consumer_secret ='应用的App Secret' auth = OAuthHandler(consumer_key, consumer_secret) auth_url = auth.get_authorization_url() print 'Please authorize: ' + auth_url verifier = raw_input('PIN: ').strip() auth.get_access_token(verifier) api = API(auth) status = api.update_status(status='hello world', lat='12.3', long='45.6') # 注意status必须是UTF-8编码的字符串,经纬度是可以不写的 print status.id print status.text
  运行这个程序会提示一个URL链接,在浏览器中打开这个链接,并授予访问权限,你会得到一串PIN码。输入此 PIN 码,将发送一条推文,同时还会显示用户的访问令牌密钥和访问令牌秘密。
  但是,这是否有点太书呆子了?其实只要知道Access token key和Access token secret,我们就可以直接使用它们来创建API对象:
  # -*- coding: utf-8 -*- from weibopy.auth import OAuthHandler from weibopy.api import API consumer_key= '应用的key' consumer_secret ='应用的App Secret' token = '用户的Access token key' tokenSecret = '用户的Access token secret' auth = OAuthHandler(consumer_key, consumer_secret) auth.setToken(token, tokenSecret) api = API(auth) status = api.update_status(status='搞定收工~')
  这时候我们可以重构代码,写一个微博类来实现上述功能,实现一些api操作。
  class weibo(object): def __init__(self): self.consumer_key = consumer_key self.consumer_secret = consumer_secret def getAtt(self, key): try: return self.obj.__getattribute__(key) except Exception, e: print e return '' def getAttValue(self, obj, key): try: return obj.__getattribute__(key) except Exception, e: print e return '' def auth(self): self.auth = OAuthHandler(self.consumer_key, self.consumer_secret) auth_url = self.auth.get_authorization_url() print 'Please authorize: ' + auth_url verifier = raw_input('PIN: ').strip() self.auth.get_access_token(verifier) self.api = API(self.auth) def setToken(self, token, tokenSecret): self.auth = OAuthHandler(self.consumer_key, self.consumer_secret) self.auth.setToken(token, tokenSecret) self.api = API(self.auth) def update(self, message): message = message.encode("utf-8") status = self.api.update_status(status=message) self.obj = status id = self.getAtt("id") return id def destroy_status(self, id): status = self.api.destroy_status(id) self.obj = status id = self.getAtt("id") return id def comment(self, id, message): comment = self.api.comment(id=id, comment=message) self.obj = comment mid = self.getAtt("id") return mid def comment_destroy (self, mid): comment = self.api.comment_destroy(mid) self.obj = comment mid = self.getAtt("id") text = self.getAtt("text") return mid def repost(self, id, message): post = self.api.repost(id=id, status=message) self.obj = post mid = self.getAtt("id") return mid def get_username(self): if getattr(self, '_username', None) is None: self._username = self.auth.get_username() return self._username
  不知道读者是否还记得上面授权部分的代码。在login_check方法代码中,有这么一句。
  request.session['oauth_access_token'] = access_token
  授权用户的 access_token 已经存储在 session 变量中。因此,当用户授权完成后,我们可以直接使用session中存储的access_token,像这样:
  access_token = request.session.get('oauth_access_token', None) if access_token is not None: weibo_client = weibo() weibo_client.setToken(access_token.key, access_token.secret) weibo_client.update('全部完成~')
  在上面的例子中,只使用了部分 API。有关完整的 API 手册,请参阅此处。
  文章来源:

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博推出可嵌入到第三方网站的赞按钮(组图))

网站优化优采云 发表了文章 • 0 个评论 • 87 次浏览 • 2021-10-21 16:01 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博推出可嵌入到第三方网站的赞按钮(组图))
  【编者按】网站 正在建设中,还有一种方式分享。
  在网页版微博和手机客户端推出点赞按钮后,新浪微博现在有了一个可以嵌入第三方的点赞按钮网站。
  
  据新浪微博开放平台相关页面介绍,用户可以通过点赞按钮同时表达态度、发现朋友、分享内容。
  随时随地轻松表达态度——用户浏览网页,找到自己喜欢的内容,一键“赞”即可表达心情,方便快捷
  发现朋友——“喜欢”按钮也会显示表达过他们态度的用户。如果你的微博朋友也“点赞”了,那你就会看到她/他
  同步内容分享-----点击按钮后,用户将一条收录对象内容的动态消息同步到微博,并通过微博继续传播
  网站 开发人员现在可以将此按钮嵌入到他们自己的 网站 中。
  Like按钮最早出现在FriendFeed(Twitter的竞争对手,后来被Facebook收购)网站,然后被Facebook发扬光大,现在充斥着世界各个角落(中国除外)。我用 36 氪 文章 写了一篇文章,解释了 Like 按钮的强大:
  带有“赞”按钮网站 的媒体将其推荐流量平均增加了 300%。
  Levi's 于 2010 年 4 月添加了 Like 按钮,此后流量增长了 40 倍并保持稳定。
  添加“赞”按钮后,收入在 2 周内增长了 100%。
  添加赞按钮后,Tea 采集 的每日收入翻了 10 倍。
  但是,要实现这个效果,微博需要支持将用户喜欢的内容同步到时间线(目前只显示在自己的个人资料页面)。上次与新浪微博开放平台总经理楚大臣交流时,他透露未来会加入这个功能,但他们还在探索内容的呈现方式。Timeline 中出现的点赞内容非常有利于流量,但处理不当会对用户造成干扰。
  
  (个人资料页面点赞按钮的显示效果)
  除了新浪微博,QQ空间和人人网也早就推出了自己的点赞按钮。据说腾讯微博很早就在规划这个功能。
  对于微博来说,点赞按钮可以让他们采集大量的用户数据,这对于未来无论是用于投放精准广告还是对内容进行个性化推荐都将是非常有价值的。 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博推出可嵌入到第三方网站的赞按钮(组图))
  【编者按】网站 正在建设中,还有一种方式分享。
  在网页版微博和手机客户端推出点赞按钮后,新浪微博现在有了一个可以嵌入第三方的点赞按钮网站。
  
  据新浪微博开放平台相关页面介绍,用户可以通过点赞按钮同时表达态度、发现朋友、分享内容。
  随时随地轻松表达态度——用户浏览网页,找到自己喜欢的内容,一键“赞”即可表达心情,方便快捷
  发现朋友——“喜欢”按钮也会显示表达过他们态度的用户。如果你的微博朋友也“点赞”了,那你就会看到她/他
  同步内容分享-----点击按钮后,用户将一条收录对象内容的动态消息同步到微博,并通过微博继续传播
  网站 开发人员现在可以将此按钮嵌入到他们自己的 网站 中。
  Like按钮最早出现在FriendFeed(Twitter的竞争对手,后来被Facebook收购)网站,然后被Facebook发扬光大,现在充斥着世界各个角落(中国除外)。我用 36 氪 文章 写了一篇文章,解释了 Like 按钮的强大:
  带有“赞”按钮网站 的媒体将其推荐流量平均增加了 300%。
  Levi's 于 2010 年 4 月添加了 Like 按钮,此后流量增长了 40 倍并保持稳定。
  添加“赞”按钮后,收入在 2 周内增长了 100%。
  添加赞按钮后,Tea 采集 的每日收入翻了 10 倍。
  但是,要实现这个效果,微博需要支持将用户喜欢的内容同步到时间线(目前只显示在自己的个人资料页面)。上次与新浪微博开放平台总经理楚大臣交流时,他透露未来会加入这个功能,但他们还在探索内容的呈现方式。Timeline 中出现的点赞内容非常有利于流量,但处理不当会对用户造成干扰。
  
  (个人资料页面点赞按钮的显示效果)
  除了新浪微博,QQ空间和人人网也早就推出了自己的点赞按钮。据说腾讯微博很早就在规划这个功能。
  对于微博来说,点赞按钮可以让他们采集大量的用户数据,这对于未来无论是用于投放精准广告还是对内容进行个性化推荐都将是非常有价值的。

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博V2版PHPSDKDemo使用教程版Demo演示地址)

网站优化优采云 发表了文章 • 0 个评论 • 72 次浏览 • 2021-10-21 02:17 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博V2版PHPSDKDemo使用教程版Demo演示地址)
  ==================
  用于新浪微博开放平台的PHP SDK。收录可以直接使用的DEMO。
  SAE(Sina App Engine,)内置SDK,无需下载,需要手动调用require_once('saetv2.ex.class.php');
  作曲家
  composer.phar 需要 xiaosier/libweibo:dev-master
  微博写界面说明
  由于微博开放平台的调整,写界面需要切换到分享分享界面,说明是%E3%80%90%E5%B9%B3%E5%8F%B0%E5 %85%AC%E5% 91%8A%E3%80%91%E5%BE%AE%E5%8D%9A%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F %B0%E5%88% 86%E4%BA%AB%E5%88%B0%E5%BE%AE%E5%8D%9A%E6%8E%A5%E5%8F%A3%E5%8D%87 %E7%BA%A7% E5%85%AC 在这里。您需要使用 $instance->share($status, $pic);调用时的方法,例如:
  share($status.'', ​​$file_local);var_dump($ret);">
  $c = new SaeTClientV2( WB_AKEY , WB_SKEY , WB_ACCESSTOKEN );
// 待发送的文字内容
$status = '发送的文字内容';
// 本地一张图片,也可以不带图片
$file_local = '5486087cly1fhh2yaksr1j20j60srtd0.jpg';
// 拼接'http://weibosdk.sinaapp.com/'是因为这个share接口至少要带上一个【安全域名】下的链接。
$ret = $c->share($status.'http://weibosdk.sinaapp.com/', $file_local);
var_dump($ret);
  更新说明
  Demo 演示地址
  如何申请API Key
  您需要有新浪微博开放平台的API Key。在此处申请:
  关于Class的功能
  新浪微博V2版PHPSDK Demo使用教程
  新浪微博应用Demo教程
  OAuth 版演示教程
  错误跟踪器
  有错误吗?请在 GitHub 上创建问题!
  作者授权 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博V2版PHPSDKDemo使用教程版Demo演示地址)
  ==================
  用于新浪微博开放平台的PHP SDK。收录可以直接使用的DEMO。
  SAE(Sina App Engine,)内置SDK,无需下载,需要手动调用require_once('saetv2.ex.class.php');
  作曲家
  composer.phar 需要 xiaosier/libweibo:dev-master
  微博写界面说明
  由于微博开放平台的调整,写界面需要切换到分享分享界面,说明是%E3%80%90%E5%B9%B3%E5%8F%B0%E5 %85%AC%E5% 91%8A%E3%80%91%E5%BE%AE%E5%8D%9A%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F %B0%E5%88% 86%E4%BA%AB%E5%88%B0%E5%BE%AE%E5%8D%9A%E6%8E%A5%E5%8F%A3%E5%8D%87 %E7%BA%A7% E5%85%AC 在这里。您需要使用 $instance->share($status, $pic);调用时的方法,例如:
  share($status.'', ​​$file_local);var_dump($ret);">
  $c = new SaeTClientV2( WB_AKEY , WB_SKEY , WB_ACCESSTOKEN );
// 待发送的文字内容
$status = '发送的文字内容';
// 本地一张图片,也可以不带图片
$file_local = '5486087cly1fhh2yaksr1j20j60srtd0.jpg';
// 拼接'http://weibosdk.sinaapp.com/'是因为这个share接口至少要带上一个【安全域名】下的链接。
$ret = $c->share($status.'http://weibosdk.sinaapp.com/', $file_local);
var_dump($ret);
  更新说明
  Demo 演示地址
  如何申请API Key
  您需要有新浪微博开放平台的API Key。在此处申请:
  关于Class的功能
  新浪微博V2版PHPSDK Demo使用教程
  新浪微博应用Demo教程
  OAuth 版演示教程
  错误跟踪器
  有错误吗?请在 GitHub 上创建问题!
  作者授权

使用新浪微博开放平台api同步微博内容至自己网站(新浪微博新的API授权方式为OAuth2以往的BasicAuth(图))

网站优化优采云 发表了文章 • 0 个评论 • 91 次浏览 • 2021-10-19 11:09 • 来自相关话题

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博新的API授权方式为OAuth2以往的BasicAuth(图))
  1、注册新浪账号2、开发者认证
  我需要认证,我等了一天。提交身份认证后即可使用,无需等待认证通过。
  3、创建APP
  系统会为此应用分配一个APP KEY和APP SECRET。这两个字符串非常重要,将在以后的身份验证或信息交换中使用。
  4、设置应用授权回调页面
  应用信息-高级信息-OAuth2.0 授权设置,设置授权回调页面。
  如果没有自己的网站,可以设置redirecturl为,程序中的redirecturl要和这个一致。
  如图所示:
  
  如果没有设置授权回调页面地址,或者程序与此不同,会出现如下错误:
  访问出错了!
你所访问的站点在新浪微博的认证失败,请你联系gnocob或者稍后再试。
(error:redirect_uri_mismatch)
  如图所示:
  
  5、下载所需版本的sdk
  6、查看可用的 API
  %E6%96%87%E6%A1%A3
  可用于我的应用程序的接口:
  
  7、测试及其他
  Python SDK 调用 API 测试如下:
  #encoding=utf-8
from weibo import APIClient
def get_access_token(app_key, app_secret, callback_url):
client = APIClient(app_key=app_key, app_secret=app_secret, redirect_uri=callback_url)
# 获取授权页面网址
auth_url = client.get_authorize_url()
print auth_url

# 在浏览器中访问这个URL,会跳转到回调地址,回调地址后面跟着code,输入code
code = raw_input("Input code:")
r = client.request_access_token(code)
access_token = r.access_token
# token过期的UNIX时间
expires_in = r.expires_in
print 'access_token:',access_token
print 'expires_in:', expires_in
return access_token, expires_in
if __name__ == '__main__':
app_key = '1234567'
app_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
callback_url = 'https://api.weibo.com/oauth2/default.html'
access_token, expires_in = get_access_token(app_key, app_secret, callback_url)
# 上面的语句运行一次后,可保存得到的access token,不必每次都申请
#access_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
#expires_in = '00000000'
client = APIClient(app_key=app_key, app_secret=app_secret, redirect_uri=callback_url)
client.set_access_token(access_token, expires_in)
# 使用获得的OAuth2.0 Access Token调用API
print client.get.statuses__user_timeline()
print client.post.statuses__update(status=u'测试OAuth 2.0发微博')
  OAuth 认证方式:
  得到auth_url后,长这样:
  %3A//oauth2/default.html&response_type=code&client_id=180341588&display=default,
  用浏览器打开,会跳转到授权回调页面地址,像这样:
  ,
  获取后面的code值,申请access_token。成功后即可获得访问权限。
  注意新浪微博新的API授权方式是OAuth2,与之前的Basic Auth不同。详细参考:
  如何使用OAuth2以及如何使用API​​,请参考:
  如果在使用过程中出现问题,在google或者官方论坛搜索提示信息, 查看全部

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博新的API授权方式为OAuth2以往的BasicAuth(图))
  1、注册新浪账号2、开发者认证
  我需要认证,我等了一天。提交身份认证后即可使用,无需等待认证通过。
  3、创建APP
  系统会为此应用分配一个APP KEY和APP SECRET。这两个字符串非常重要,将在以后的身份验证或信息交换中使用。
  4、设置应用授权回调页面
  应用信息-高级信息-OAuth2.0 授权设置,设置授权回调页面。
  如果没有自己的网站,可以设置redirecturl为,程序中的redirecturl要和这个一致。
  如图所示:
  
  如果没有设置授权回调页面地址,或者程序与此不同,会出现如下错误:
  访问出错了!
你所访问的站点在新浪微博的认证失败,请你联系gnocob或者稍后再试。
(error:redirect_uri_mismatch)
  如图所示:
  
  5、下载所需版本的sdk
  6、查看可用的 API
  %E6%96%87%E6%A1%A3
  可用于我的应用程序的接口:
  
  7、测试及其他
  Python SDK 调用 API 测试如下:
  #encoding=utf-8
from weibo import APIClient
def get_access_token(app_key, app_secret, callback_url):
client = APIClient(app_key=app_key, app_secret=app_secret, redirect_uri=callback_url)
# 获取授权页面网址
auth_url = client.get_authorize_url()
print auth_url

# 在浏览器中访问这个URL,会跳转到回调地址,回调地址后面跟着code,输入code
code = raw_input("Input code:")
r = client.request_access_token(code)
access_token = r.access_token
# token过期的UNIX时间
expires_in = r.expires_in
print 'access_token:',access_token
print 'expires_in:', expires_in
return access_token, expires_in
if __name__ == '__main__':
app_key = '1234567'
app_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
callback_url = 'https://api.weibo.com/oauth2/default.html'
access_token, expires_in = get_access_token(app_key, app_secret, callback_url)
# 上面的语句运行一次后,可保存得到的access token,不必每次都申请
#access_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
#expires_in = '00000000'
client = APIClient(app_key=app_key, app_secret=app_secret, redirect_uri=callback_url)
client.set_access_token(access_token, expires_in)
# 使用获得的OAuth2.0 Access Token调用API
print client.get.statuses__user_timeline()
print client.post.statuses__update(status=u'测试OAuth 2.0发微博')
  OAuth 认证方式:
  得到auth_url后,长这样:
  %3A//oauth2/default.html&response_type=code&client_id=180341588&display=default,
  用浏览器打开,会跳转到授权回调页面地址,像这样:
  ,
  获取后面的code值,申请access_token。成功后即可获得访问权限。
  注意新浪微博新的API授权方式是OAuth2,与之前的Basic Auth不同。详细参考:
  如何使用OAuth2以及如何使用API​​,请参考:
  如果在使用过程中出现问题,在google或者官方论坛搜索提示信息,

官方客服QQ群

微信人工客服

QQ人工客服


线