在 Yahoo! 开发者网络中查找文档和支持:http://developer.yahoo.com
托管在 GitHub 上:http://github.com/yahoo/yos-social-objc/tree/master
软件许可协议 (BSD 许可)
版权 (c) 2009, Yahoo! Inc.
保留所有权利。
此软件的重新分发和使用(无论是否修改),只要满足以下条件,都是允许的
源代码的重新分发必须保留上述版权声明,本条件列表和以下免责声明。
二进制形式的重新分发必须在内文档和/或其他随重新分发提供的材料中,重复上述版权声明、本条件列表和以下免责声明。
未经 Yahoo! Inc. 的具体事先书面许可,不得使用 Yahoo! Inc. 的名称或其贡献者的姓名来推广或支持由此软件派生出的产品。
本软件由版权所有者和贡献者“按原样”提供,并且任何明示或默示的保证,包括但不限于商誉保证和适用于特定目的的适当性保证,均被拒绝。在任何情况下,版权所有者或贡献者均不对任何直接、间接、意外、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务的中断)承担责任,无论此类损害是否由本软件的使用引起,即使已被告知此类损害的可能性。
此软件还引用或包含了以下知识产权来源,其许可条款已在来源中设定
以下依赖项包含在Yahoo!社交SDK中,但根据单独的许可协议使用
将YOAuth、YOSSocial和json-framework组包含到您的Xcode项目路径中。然后,将YOSSocial.h头文件包含到您的代码中。
#import "YOSSocial.h"
要使用Yahoo!网络服务,我们需要了解您和您正在构建的应用程序的一些信息。注册新应用程序ID以获取OAuth消费者密钥及密钥。
会话包含三个重要对象:YDN应用程序ID、OAuth消费者和OAuth访问令牌。这些对象提供了初始化请求和用OAuth进行签名所需的凭据。要使用YOSSession创建一个新会话,请使用您的消费者密钥、消费者密钥和作为参数获取的应用程序ID对其进行初始化。
// create a session by passing our
// consumer key, consumer secret and application id.
YOSSession *session = [YOSSession sessionWithConsumerKey:@"Key"
andConsumerSecret:@"Secret"
andApplicationId:@"AppID"];
由于会话可以持久化,因此您需要检查现有的用户会话。如果尚不存在用户会话,则用户必须登录,以便应用程序能够访问其受保护的用户信息(简介、连接、更新等)。或者,如果已存在会话,会话将自动获取新的访问令牌以续订会话。
// try to resume a user session if one exists
BOOL hasSession = [session resumeSession];
if(hasSession == FALSE) {
[session sendUserToAuthorizationWithCallbackUrl:nil];
}else{
[self sendRequests];
}
现在我们有一个准备好的会话,我们可以获取登录用户的社交信息。您可以获取的用户数据的深度将取决于您的应用程序请求的权限。
YOSUserRequest的每个'GET'方法都会创建一个带有您提供的代理的异步请求。当请求返回时,将调用代理方法'requestDidFinishLoading',并传入一个包含NSHTTPURLResponse对象、NSData响应对象、响应文本字符串和NSError对象(如果发生错误)的YOSResponseData对象,您的应用程序应该处理这些对象。
要处理响应数据对象,请使用json-framework的方法解析响应文本(默认为编码的JSON数据)。
- (void)sendRequests {
// initialize a user request for the logged-in user
YOSUserRequest *request = [YOSUserRequest requestWithSession:session];
// fetch the user's profile data
YOSResponseData *userProfileResponse = [request fetchProfileWithDelegate:self];
}
- (void)requestDidFinishLoading:(YOSResponseData *)data {
// parse the response text string into a dictionary
NSDictionary *rspData = [data.responseText JSONValue];
NSDictionary *profileData = [rspData objectForKey:@"profile"];
// format a string using the nickname object from the profile.
NSString *welcomeText = [NSString stringWithFormat:@"Hey %@ %@!",
[profileData objectForKey:@"givenName"],
[profileData objectForKey:@"familyName"]];
}
Yahoo!为用户提供了两种将用户的活动分享回其他Yahoo!用户的方式
状态:描述用户当前正在做什么的文本行。
更新:用户的共享活动流。(每个至少包含一行由开发人员提供的文本、您的图标和指向您的应用程序的链接。)
您可以使用这些渠道来向大量Yahoo!用户宣传用户对您的应用的使用,将这个大群体引导到您的产品。
下面的示例代码显示了如何设置用户的状态并将更新发布到他们的活动流中。
状态
// get the logged-in user
YOSUserRequest *request = [YOSUserRequest requestWithSession:session];
// set the user's current status message
[request setStatus:@"is hacking"];
更新
YOSUserRequest *request = [YOSUserRequest requestWithSession:session];
[request insertUpdateWithTitle:@"installed Foo app on their iPhone"
andDescription:@""
andLink:@"http://myapplication.com/download"
andDate:nil
andSuid:[request generateUniqueSuid]];
同步
YQLQueryRequest *request = [YQLQueryRequest requestWithSession:self.session];
NSString *structuredLocationQuery = [NSString
stringWithFormat:@"select * from geo.places where text=\"sfo\""];
YOSResponseData *data = [request query:structuredLocationQuery];
NSDictionary *rspData = [data.responseText JSONValue];
NSDictionary *queryData = [rspData objectForKey:@"query"];
NSDictionary *results = [queryData objectForKey:@"results"];
NSLog(@"%@", [results description]);
异步
- (void)sendRequests {
YQLQueryRequest *request = [YQLQueryRequest requestWithSession:self.session];
NSString *structuredLocationQuery = [NSString
stringWithFormat:@"select * from geo.places where text=\"sfo\""];
[request query:structuredLocationQuery withDelegate:self];
}
- (void)requestDidFinishLoading:(YOSResponseData *)data {
NSDictionary *rspData = [data.responseText JSONValue];
NSDictionary *queryData = [rspData objectForKey:@"query"];
NSDictionary *results = [queryData objectForKey:@"results"];
NSLog(@"%@", [results description]);
}
Yahoo! Social API的使用受Yahoo! API使用条款约束。您对YQL的使用需遵守YQL服务条款。