问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

小弟想问下新浪微博开放平台C++的SDK怎么用啊

发布网友 发布时间:2022-04-21 19:48

我来回答

1个回答

热心网友 时间:2023-11-11 06:47

  本文介绍了如何在Android程序中使用新浪微博提供的AndroidSDK

  微博Android平台SDK为第三方微博应用提供了文档易用的微博API调用服务,使第三方客户端无需了解复杂的验证,API调用过程。并可以实现分享到微博的功能,可以分享文字,或者多媒体信息到内置的分享页面,并发送到微博。

  首先我们需要在新浪微博开放平台上进行注册,之后需要创建一个新的应用,并且需要记下应用的APP key,App Secret Key以及设置应用的回调页以便我们在程序中进行使用。此外,还需要在应用的高级信息里添加测试用户的uid,切记切记,否则会出现登陆不成功等怪现象。

  接着我们下载微博提供的Android上的SDK,下载地址在这里http。//open。weibo。com/wiki/SDK,选择AndroidSDK进行下载即可。
  使用方法:

  首先将下载的sdk进行解压,并将其导入到eclipse中,接着在你需要使用sdk的android工程中点击右键,属性,设置library属性,选中刚才导入的weibosdk即可。如图所示

  然后在你的工程的Manifest文件中,加入以下权限:

  <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
  <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission>
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

  这样我们就能使用weibosdk了

  建立工程以后如何在代码中使用weiboAPI呢,下面就由我来为大家介绍使用方法:
  首先在你需要使用微博的Activity中加入以下代码:

  Weibo weibo = Weibo.getInstance();
  weibo.setupConsumerConfig(Constants.CONSUMER_KEY,Constants.CONSUMER_SECRET);
  weibo.setRedirectUrl("Your URLhere");
  weibo.authorize(this,
  listener);
  注意代码中的Constants.CONSUMER_KEY,Constants.CONSUMER_SECRET即是文章开头介绍的在微博上创建的应用里的两个key,setRedirectUrl中的内容即是在应用中设置的回调页。

  Listener则是在进行登陆授权后对执行结果进行处理的Litener,代码如下

  public class AuthDialogListener implements WeiboDialogListener {
  private Activity context;
  private String content;
  private String file;
  private float lat;
  private float lon;
  private static boolean isOver=true;
  public AuthDialogListener(Activity context,String content,String file,float lat,float lon){
  this.context= context;
  this.content=content;
  this.file=file;
  this.lat=lat;
  this.lon=lon;
  }
  @Override
  public void onComplete(Bundle values) {
  String token = values.getString("access_token");
  String expires_in = values.getString("expires_in");
  String oauth_verifier = values.getString("oauth_verifier");
  AccessToken accessToken = new AccessToken(token, Constants.CONSUMER_SECRET);
  accessToken.setExpiresIn(expires_in);
  accessToken.setVerifier(oauth_verifier);
  Weibo.getInstance().setAccessToken(accessToken);
  try {
  if (isOver) {
  isOver=false;
  share2weibo(this.content,null,listener,lat,lon);
  }

  } catch (WeiboException e) {
  e.printStackTrace();
  }
  }

  @Override
  public void onError(DialogError e) {
  Toast.makeText(context.getApplicationContext(),
  "Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
  }

  @Override
  public void onCancel() {
  Toast.makeText(context.getApplicationContext(), "Auth cancel",
  Toast.LENGTH_LONG).show();
  }

  @Override
  public void onWeiboException(WeiboException e) {
  Toast.makeText(context.getApplicationContext(),
  "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
  .show();
  }

  private void share2weibo(String content,String file,RequestListener listener,float lat , float lon) throws WeiboException {
  Weibo weibo = Weibo.getInstance();
  WeiboParameters params= new WeiboParameters();
  params.add("access_token", weibo.getAccessToken().getToken());
  params.add("status", content);
  params.add("lat", String.valueOf(lat));
  params.add("long", String.valueOf(lon));
  String url = Weibo.SERVER + "statuses/update.json";
  if (file!=null&&!file.equalsIgnoreCase("")) {
  params.add("pic", file);
  url = Weibo.SERVER + "statuses/upload.json";
  }
  AsyncWeiboRunner runner = new AsyncWeiboRunner(weibo);
  runner.request(this.context, url, params,Utility.HTTPMETHOD_POST,listener);

  }
  RequestListener listener= new RequestListener() {

  @Override
  public void onIOException(IOException e) {
  isOver=true;
  Toast.makeText(context, "RequestListener "+e.getMessage(), Toast.LENGTH_LONG).show();
  }

  @Override
  public void onError(WeiboException e) {
  isOver=true;
  Toast.makeText(context, "RequestListener "+e.getMessage(), Toast.LENGTH_LONG).show();
  }

  @Override
  public void onComplete(String response) {
  isOver=true;
  Toast.makeText(context, "Success!", Toast.LENGTH_LONG).show();
  }
  };
  }

  需要完成WeiboDialogListener接口中的方法,分别是onComplete,OnError,
  OnCancel,OnWeiboException。其中Oncomplete是在微博登陆授权成功后会执行的方法,在这个方法中,你可以调用你想要的功能如发表微博,转发,评论等。使用的代码可参看以下代码:

  Weibo weibo = Weibo.getInstance();
  WeiboParameters params= new WeiboParameters();
  params.add("access_token", weibo.getAccessToken().getToken());
  params.add("status", content);
  params.add("lat", String.valueOf(lat));
  params.add("long", String.valueOf(lon));
  String url = Weibo.SERVER + "statuses/update.json";
  AsyncWeiboRunner runner = new AsyncWeiboRunner(weibo);
  runner.request(this.context,url,params,Utility.HTTPMETHOD_POST,listener);

  其中params是调用weibo api中需要的具体参数,可根据需要进行添加
  AsyncWeiboRunner 是用来执行具体请求的类,根据你设定的参数发起请求。注意这里又有一个listerner,而这个listener是对发起请求后的结果进行处理的回调类,
  RequestListener listener= new RequestListener()
  需要复写的方法有OnIOException,onError,onComplete,这样可以清楚地对各种情况进行处理。
  这样在程序中就可以使用新浪微博 android sdk了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 新浪微博SDK如何不启动新浪微博客户端发送消息 JAVA: 如何把新浪微博开发的SDK导入到现有的项目中 新浪微博用java sdk,发送带图片的微博,怎么弄? iphone4s屏幕一直黑屏但触屏有反应什么情况 求解用微博号登陆应用,出现下面页面是应用问题还... 手机屏幕不亮了但是可以触屏是主板坏了吗 新浪微博sdk什么时候开始支持https oppo手机屏幕没有反应 一直黑屏 触屏好使 新浪微博 java-SDK下应用- 发微博- 获取access_tok... 手机可以正常开机,但是屏幕无法显示,触屏还可以... 微博iOS SDK需要注册Bundle id,请问哪里注册 手机黑屏但可以触摸是什么问 新浪微博登陆获取参数或自定义图标调用微博登陆的... 手机摔了之后可以开机,触屏也有反应,但是一直黑... 怎么用python的sdk调用新浪微博API来提取给定ID用... 我的手机黑屏了,但是触屏都有反应,只是黑屏了,... Android 新浪微博SDK的使用 sinaweibosdk/libweibosdk.a 包含idfa怎么办 触摸正常,但屏幕黑屏,各位大侠怎样救 新浪微博 java-SDK下应用- 发微博- 需要反复获取ac... 联合办公室有哪些优缺点? 在上海租一个联合办公要多少钱? 联合办公行业,问题都有哪些 COHESION目林联合办公和传统写字楼办公对比有什么... 联合办公室是什么意思? 联合办公是如何定义的,目前有哪些联合办公模式? 感觉联合办公最近特别流行,它和传统办公相比有什... 联合办公有什么特色,有没有联合办公运营经验可以... 为什么越来越多的企业会选择联合办公 u盘插在电脑上显示此驱动器存在问题? 2022年了,你还期待高性能LCD屏幕手机吗?为什么呢? 目前最好的lcd屏幕手机 目前市面上LCD屏比较好的手机有哪些啊? 华为NOVA 6屏幕是LCD还是OLED的? 华为荣耀10屏幕怎么样 是LCD屏吗 华为mate9的屏幕是lcd还是ambled? 魏尔伦的诗 保尔魏尔伦最著名的诗 法国诗人魏尔伦的诗歌主要是什么风格? 为什么电脑上的文件夹一复制到U盘里就变成空文件夹...