如何在iOS上为Disqus创建帖子?

时间:2013-09-03 03:28:07

标签: ios post comments disqus

我正在为客户开发一个应用程序。此应用程序使用户可以阅读和发表评论。我们的客户网站已经使用过Discus。现在我们可以检索注释并以原生方式显示它。但我们发现无法创建帖子并将其发送给Disqus。有没有人在iOS上有一些Disqus的经历?

任何想法都会受到高度赞赏。

编辑:我们的客户网站已经有一个身份验证系统,因此我们也将该系统集成到我们的应用程序中。每次用户在应用中发表评论时,我们都会使用他/她的身份验证信息。我们不希望用户再次进行身份验证。

3 个答案:

答案 0 :(得分:2)

这是一个很好的解决方案,可以帮助您轻松将Disqus集成到iOS应用https://github.com/moqod/disqus-ios中。就像一个开箱即用的魅力。

您不仅可以发帖,还可以通过社交网络进行授权并回复评论。

答案 1 :(得分:1)

您在服务器上设置了API,对吗?然后将请求发送到您的服务器,将其传递给您需要的任何API密钥和凭据,并让服务器代表客户端向Disqus API发布帖子。基本上,构建自己的iOS API,通过服务器与Disqus API连接。

更好的方法是通过使用NSURLRequest / Connection发出请求直接与Disqus服务器交互。有关Disqus请求look here的更多信息。这将使您的应用程序更快,更容易出错,除非您在服务器上执行一些关键活动,而不仅仅是发布和显示注释。

答案 2 :(得分:0)

@RahuGupta:对不起,如果回复太迟了。我发布了使用SSO的评论,我不知道发布为客人。但它应该更容易。

在我的情况下,我使用第三方认证服务器发表评论,这意味着我们自己验证用户。这项技术称为SSO。您可能想要阅读关于SSO的文档。

如果您需要在objective-c中使用代码段:

NSMutableDictionary *dico = [[NSMutableDictionary alloc] init];
[dico setValue:[NSString stringWithFormat:@"uniqueId_%@",comment.authorID] forKey:@"id"];
[dico setValue:comment.authorName forKey:@"username"];
[dico setValue:comment.authorEmail forKey:@"email"];


NSString *message = [dico JSONRepresentation];
NSString *message64Based = [DataPost base64String:message];

NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970];

NSString *secret = DISQUS_API_SECRET;
NSString *api_key = DISQUS_API_PUBLIC;

//comment.threadID will makes the app crashed, because when comment is not fully loaded, it's nil
NSString *threadID = [NSString stringWithFormat:@"%@",comment.threadID];

NSString *commentMessage = [[comment.rawMessage stringByReplacingOccurrencesOfString:@"=" withString:@"%3D"] stringByReplacingOccurrencesOfString:@" " withString:@"+"];

NSString *host     = @"http://example.com";
NSString *referrer = @"example.com";

NSString *hmac = [self hashedValue:secret andData:[NSString stringWithFormat:@"%@ %.0lf",message64Based, timeStamp]];
NSString *remote_auth_s3 = [[[NSString stringWithFormat:@"%@ %@ %.0lf", message64Based, hmac, timeStamp] stringByReplacingOccurrencesOfString:@"=" withString:@"%3D"] stringByReplacingOccurrencesOfString:@" " withString:@"+"];


NSMutableURLRequest *uploadRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://disqus.com/api/3.0/posts/create.json"] cachePolicy: NSURLRequestReloadIgnoringLocalCacheData timeoutInterval: 60.0f];

NSMutableData *postData = (NSMutableData *)[[NSString stringWithFormat:@"_format=json&thread=%@&message=%@&remote_auth=%@&api_key=%@&strict=1", threadID , commentMessage, remote_auth_s3 , api_key] dataUsingEncoding:NSUTF8StringEncoding];
[uploadRequest setHTTPMethod:@"POST"];
[uploadRequest setHTTPBody: postData];
[uploadRequest setValue:[NSString stringWithFormat:@"%d", [postData length]] forHTTPHeaderField:@"Content-Length"];
[uploadRequest setValue:referrer forHTTPHeaderField:@"referrer"];
[uploadRequest setValue:host forHTTPHeaderField:@"host"];

[uploadRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

NSHTTPURLResponse *response=nil;
NSError *error = nil;
[NSURLConnection sendSynchronousRequest:uploadRequest returningResponse:&response error:&error];