微博分享SDK的开发流程


 

一.腾讯微博分享SDK开发流程

1 将下载好的sdk包添加到程序中

2 在程序中设置好你的app key以及app secret

3 在需要分享的地方,先通过app key以及app secret获取令牌号token key 以及token Secret
将获取的令牌信息保存到程序中

1.QWeiboSyncApi *api = [[[QWeiboSyncApi alloc] init] autorelease];

2.NSString *retString = [api getAccessTokenWithConsumerKey:appDelegate.appKey 
3.                consumerSecret:appDelegate.appSecret  
4.               requestTokenKey:appDelegate.tokenKey 
5.               requestTokenSecret:appDelegate.tokenSecret 
6.                 verify:verifier];
7.NSLog(@"\nget access token:%@", retString);
8.//解析返回的令牌值
9.  [appDelegate parseTokenKeyWithResponse:retString];

 

4 然后创建一个UIWebView,用于发送申请绑定的界面,通过令牌号,提示用户输入账号和密码进行绑定
1.#define VERIFY_URL @"http://open.t.qq.com/cgi-bin/authorize?oauth_token="

2.//创建webview
3.mWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
4.mWebView.delegate = self;
5.[self.view addSubview:mWebView];
6.//加载url
7.NSString *url = [NSString stringWithFormat:@"%@%@", VERIFY_URL, appDelegate.tokenKey];
8.NSURL *requestUrl = [NSURL URLWithString:url];
9.NSURLRequest *request = [NSURLRequest requestWithURL:requestUrl];
10.[mWebView loadRequest:request];

5 用户在绑定界面中的点击事件,可以用

1- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

这个函数还捕捉到。

6 在上面的web处理函数中,,首先要判断里面的verifier是否为空,如果不为空,就需要通过QWeiboSyncApi类的getAccessTokenWithConsumerKey函数,获取令牌之.如果verfier为空,则可以通过网页的形式进行号码授权

 

1.//判断代码:
2.NSString *query = [[request URL] query];
3.NSString *verifier = [self valueForKey:@"oauth_verifier" ofQuery:query];
4.
5.if (verifier && ![verifier isEqualToString:@""]) 
6.//重新获取令牌值并解析的代码
7.QWeiboSyncApi *api = [[[QWeiboSyncApi alloc] init] autorelease];
8.NSString *retString = [api getAccessTokenWithConsumerKey:appDelegate.appKey 
9.  consumerSecret:appDelegate.appSecret  
10.requestTokenKey:appDelegate.tokenKey 
11. requestTokenSecret:appDelegate.tokenSecret 
12. verify:verifier];
13. NSLog(@"\nget access token:%@", retString);
14.//解析返回的令牌值
15. [appDelegate parseTokenKeyWithResponse:retString];

7 发送文字或者图片信息到微博中

1.//异步发送信息
2.QWeiboAsyncApi *api = [[[QWeiboAsyncApi alloc] init] autorelease];
3.self.connection = [api publishMsgWithConsumerKey:appDelegate.appKey 
4.consumerSecret:appDelegate.appSecret 
5. accessTokenKey:appDelegate.tokenKey 
6. accessTokenSecret:appDelegate.tokenSecret 
7.content:@"QQ I hate you as so fucking sdk!" //content就是需要发送的文字信息
8. imageFile:hasImage ? self.fileUrl : nil //fileUrl就是需要上传的图片的路径
9. resultType:RESULTTYPE_JSON //返回数据的格式,默认是json
10.delegate:self];

//从相册中选取到的相片,会通过转换函数,将相册中选中的数据直接放到本地的temp文件夹中,然后保存到本地,将fileUrl更新为当前的地址
//如果是使用网络图片,则直接将图片的路径添加到函数中
8 上面的url请求也是一个http的请求,所以可以通过http的委托函数捕捉到返回数据

1- (void) connectionDidFinishLoading:(NSURLConnection *)connection

以上就是开发流程,希望能和大家一起交流开发过程中的问题。

二.Android上新浪微博SDK开发流程

微博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文件中,加入以下权限:

[html] view plaincopy

  1. <uses-permission android:name="android.permission.INTERNET"></uses-permission>  

  2. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  

  3. <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission>  

  4. <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,代码如下

[java] view plaincopy

  1. public class AuthDialogListener implements WeiboDialogListener {  

  2.    private Activity context;  

  3.    private String content;  

  4.    private String file;  

  5.    private float lat;  

  6.    private float lon;  

  7.    private static boolean isOver=true;  

  8.    public AuthDialogListener(Activity context,String content,String file,float lat,float lon){  

  9.        this.context= context;  

  10.        this.content=content;  

  11.        this.file=file;  

  12.        this.lat=lat;  

  13.        this.lon=lon;  

  14.    }  

  15.    @Override  

  16.    public void onComplete(Bundle values) {  

  17.        String token = values.getString("access_token");  

  18.        String expires_in = values.getString("expires_in");  

  19.        String oauth_verifier = values.getString("oauth_verifier");  

  20.        AccessToken accessToken = new AccessToken(token, Constants.CONSUMER_SECRET);  

  21.        accessToken.setExpiresIn(expires_in);  

  22.        accessToken.setVerifier(oauth_verifier);  

  23.        Weibo.getInstance().setAccessToken(accessToken);  

  24.        try {  

  25.            if (isOver) {  

  26.                isOver=false;  

  27.                share2weibo(this.content,null,listener,lat,lon);  

  28.            }  

  29.              

  30.        } catch (WeiboException e) {  

  31.            e.printStackTrace();  

  32.        }  

  33.    }  

  34.  

  35.    @Override  

  36.    public void onError(DialogError e) {  

  37.        Toast.makeText(context.getApplicationContext(),  

  38.                "Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();  

  39.    }  

  40.  

  41.    @Override  

  42.    public void onCancel() {  

  43.        Toast.makeText(context.getApplicationContext(), "Auth cancel",  

  44.                Toast.LENGTH_LONG).show();  

  45.    }  

  46.  

  47.    @Override  

  48.    public void onWeiboException(WeiboException e) {  

  49.        Toast.makeText(context.getApplicationContext(),  

  50.                "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)  

  51.                .show();  

  52.    }  

  53.      

  54.    private void share2weibo(String content,String file,RequestListener listener,float lat , float lon) throws WeiboException {  

  55.        Weibo weibo = Weibo.getInstance();  

  56.        WeiboParameters params= new WeiboParameters();  

  57.        params.add("access_token", weibo.getAccessToken().getToken());  

  58.        params.add("status", content);  

  59.        params.add("lat", String.valueOf(lat));  

  60.        params.add("long", String.valueOf(lon));  

  61.        String url = Weibo.SERVER + "statuses/update.json";  

  62.        if (file!=null&&!file.equalsIgnoreCase("")) {  

  63.             params.add("pic", file);  

  64.             url =  Weibo.SERVER + "statuses/upload.json";  

  65.        }  

  66.        AsyncWeiboRunner runner = new AsyncWeiboRunner(weibo);  

  67.        runner.request(this.context, url, params,Utility.HTTPMETHOD_POST,listener);  

  68.          

  69.          

  70.    }  

  71.    RequestListener listener= new  RequestListener() {  

  72.          

  73.        @Override  

  74.        public void onIOException(IOException e) {  

  75.            isOver=true;  

  76.            Toast.makeText(context, "RequestListener "+e.getMessage(), Toast.LENGTH_LONG).show();     

  77.        }  

  78.          

  79.        @Override  

  80.        public void onError(WeiboException e) {  

  81.            isOver=true;  

  82.            Toast.makeText(context, "RequestListener "+e.getMessage(), Toast.LENGTH_LONG).show();     

  83.        }  

  84.          

  85.        @Override  

  86.        public void onComplete(String response) {  

  87.            isOver=true;  

  88.            Toast.makeText(context, "Success!", Toast.LENGTH_LONG).show();    

  89.        }  

  90.    };  

  91. }   

需要完成WeiboDialogListener接口中的方法,分别是onComplete,OnError,

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

[java] view plaincopy

  1.    Weibo weibo = Weibo.getInstance();  

  2.        WeiboParameters params= new WeiboParameters();  

  3.        params.add("access_token", weibo.getAccessToken().getToken());  

  4.        params.add("status", content);  

  5.        params.add("lat", String.valueOf(lat));  

  6.        params.add("long", String.valueOf(lon));  

  7.        String url = Weibo.SERVER + "statuses/update.json";  

  8. AsyncWeiboRunner runner = new AsyncWeiboRunner(weibo);  

  9. 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了。

三.ShareSDK超级强大的社会化分享库

下载地址:http://www.sharesdk.cn/Download

视频集成演示:http://v.youku.com/v_show/id_XNTAyNjM5NDI0.html

主要功能:

1、支持分享到新浪微博、微信好友、微信朋友圈、QQ好友、腾迅微博、QQ空间、人人网、开心网、豆瓣、搜狐微博、网易微博、短信、邮件、打印、拷贝等,即将支持印象笔记、facebook、twitter、linkedin、pocket、Instapaper等。

2、支持获取授权用户资料及其他用户资料,可以通过SDK制作使用新浪微博登录、QQ登录等。

3、支持新浪微博SSO授权,省去用户输入密码,更方便安全。

4、支持关注官方微博。

5、支持关注微信公众帐号。

6、支持一键分享,用户可以一次性将内容全享至全部的社交平台。

7、支持@好友和插入话题、图片。

8、内置4种分享UI。

a.默认模式:支持一键分享、@好友、话题等功能

b.简单模式:模拟iOS6自带分享界面,简洁大方

c.应用推荐模式:专为用户推荐应用到社交网站而生

d.无界面模式:点击后直接分享,不弹出界面 

 

四.不用微博SDK直接分享微博信息

只需添加以下代码
Intent intent = new Intent(Intent.ACTION_SEND); //启动分享发送的属性 
intent.setType("text/plain"); //分享发送的数据类型 
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");    //分享的主题 
intent.putExtra(Intent.EXTRA_TEXT, "extratext");    //分享的内容 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(Intent.createChooser(intent, "分享"));//目标应用选择对话框的标题

就可实现分享微博功能。