一.腾讯微博分享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
-
<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,代码如下
[java] view plaincopy
-
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是在微博登陆授权成功后会执行的方法,在这个方法中,你可以调用你想要的功能如发表微博,转发,评论等。使用的代码可参看以下代码:
[java] view plaincopy
-
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了。
三.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, "分享"));//目标应用选择对话框的标题
就可实现分享微博功能。