如何获取框的刷新令牌
问题描述:
我有一个C#桌面应用程序,它将文件上传到框, 它需要一个Refresh令牌来生成访问令牌,但我无法以编程方式创建Refresh令牌。从This site创建Refresh令牌,并成功将文件上传到Box,但此刷新标记在几分钟后过期,并引发异常Refresh token has expired
。我正在使用box-csharp-sdk-v2
。如何获取框的刷新令牌
所以我想用我的客户详细信息或API密钥programaticaly
答
为了与框的OAuth2令牌努力创造一个刷新令牌,你需要使用的API密钥和密码来实例化一个TokenProvider
您应用:
// Instantiate a token provider.
var tokenProvider = new TokenProvider("apiKey", "apiSecret");
通过的OAuth2流程向用户发送后,您会收到一个授权code
。该TokenProvider
可以使用这个code
来获取第一访问/刷新标记对:
// Fetch the initial access/refresh token pair
// You will want to persist these new values for later use.
var initialTokenPair = tokenProvider.GetAccessToken("code")
每当一个新的Refresh
令牌给你刷新Access
令牌。 Refresh
令牌在使用时或过了60天后,以先到者为准过期。
// Refresh the token pair.
// You will want to persist these new values for later use.
var newTokenPair = tokenProvider.RefreshAccessToken("refreshToken");
我更新了箱CSHARP-SDK-V2readme与上述示例。我很抱歉,在此之前这个问题还没有明确说明!
编辑:添加了获取初始标记对的示例。
答
使用此代码
/*******************/
/** Authorization **/
/*******************/
// Create a OAuth2 access/refresh token provider using your API key/secret.
var tokenProvider = new TokenProvider("apiKey", "apiSecret");
// Fetch the initial token pair using the OAuth2 authorization code...
// You will want to persist these new values for later use.
var initialTokenPair = tokenProvider.GetAccessToken("code");
// You can also refresh the token pair.
// You will want to persist these new values for later use.
var newTokenPair = tokenProvider.RefreshAccessToken("refreshToken");
/*********************/
/** Box Interaction **/
/*********************/
// Instantiate a BoxManager client.
var boxManager = new BoxManager(newTokenPair.AccessToken);
// Create a new file in the root folder
boxManager.CreateFile(Folder.Root, "a new file.txt", Encoding.UTF8.GetBytes("hello, world!"));
// Fetch the root folder
var folder = boxManager.GetFolder(Folder.Root);
// Find a 'mini' representation of the created file among the root folder's contents
var file = folder.Files.Single(f => f.Name.Equals("a new file.txt"));
// Get the file with all properties populated.
file = boxManager.Get(file);
// Rename the file
file = boxManager.Rename(file, "the new name.txt");
// Create a new subfolder
var subfolder = boxManager.CreateFolder(Folder.Root, "my subfolder");
// Move the file to the subfolder
file = boxManager.Move(file, subfolder);
// Write some content to the file
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes("goodbye, world!")))
{
file = boxManager.Write(file, stream);
}
// Read the contents to a stream and write them to the console
using (var stream = new MemoryStream())
{
boxManager.Read(file, stream);
using (var reader = new StreamReader(stream))
{
stream.Position = 0;
Console.Out.WriteLine("File content: '{0}'", reader.ReadToEnd());
}
}
// Delete the folder and its contents
boxManager.Delete(subfolder, recursive: true);
As an enterprise administrator you can create a client and perform Box operations on behalf of another user.
// Instantiate a BoxManager client.
var boxManager = new BoxManager("AccessToken", onBehalfOf: "[email protected]");
// ... do stuff as that user
// ... use your power only for awesome!
谢谢您的回答,当我到了刷新令牌,我能够生成访问令牌,并保存以供将来使用,以及与此访问令牌我我能够上传文件,但我怎样才能以编程方式首次生成刷新令牌? – Sumeshk
当我上传一个文件到框中,并在下次删除它时,上传的文件将只显示在垃圾文件夹中,我试着用不同的文件夹名和文件名 – Sumeshk
*我如何以编程方式第一次生成刷新标记?添加了一个使用Box提供的OAuth2授权“代码”获取初始令牌对的示例。 –