Objective c Bit.ly API目标C检索访问令牌

Objective c Bit.ly API目标C检索访问令牌,objective-c,nsurlrequest,bit.ly,Objective C,Nsurlrequest,Bit.ly,我有一个简短的问题 我希望用户输入用户名(电子邮件)和密码,并希望从bit.ly api获取访问令牌 到目前为止,我试过: NSString *authStr = [NSString stringWithFormat:@"%@:%@", @"username", @"password"]; NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding]; NSString *authValue = [NSString str

我有一个简短的问题

我希望用户输入用户名(电子邮件)和密码,并希望从bit.ly api获取访问令牌

到目前为止,我试过:

NSString *authStr = [NSString stringWithFormat:@"%@:%@", @"username", @"password"];
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64Encoding]];
[request setValue:authValue forHTTPHeaderField:@"Authorization"];
然而,这不起作用

我需要的是让curl命令在目标c中运行:

curl -u "username:password" -X POST "https://api-ssl.bitly.com/oauth/access_token"
我知道我可以将方法设置为POST,但我不确定如何设置用户名:密码:|

我也试过使用

curl -u "CLIENT_ID:CLIENT_SECRET" -d "grant_type=password" -d "username=USERNAME" \
-d "password=PASSWORD" https://api-ssl.bitly.com/oauth/access_token
但是我仍然不知道ti如何设置客户端id和客户端机密的输入

关于如何将这些信息设置到请求中的任何帮助都会对我有很大帮助


杰克

诚然,像AFNetworking这样的东西确实让使用NSURLConnection之类的工具变得更容易,但是如果你是从头开始做的,你就很接近了

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://api-ssl.bitly.com/oauth/access_token"]];
资源所有者凭据授予的终结点。这将获得访问API其余部分所需的访问令牌

流程中最棘手的部分是“授权”标题

然后打开NSURLConnection并观察3种重要的委托方法

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];
您将希望实现:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

资料来源:我为iPhone编写了Bitly应用程序。希望这有帮助。如果您对API或上述示例有任何疑问,请告诉我。

好主意!我让它以不同的方式工作,接近你的;)使用用户凭据。现在一切正常
[request setHTTPMethod:@"POST"];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection