0

我想访问可汗学院服务,这需要认证,例如 OAuth 消费者。身份验证工作正常我使用了以下oauth 库

脚步

  • 获取请求令牌

  • 现在我有一个 request_token。我需要得到用户的批准。

https://www.khanacademy.org/api/auth2/authorize?oauth_token=t6492705587593216

可汗学院文件说

当用户点击“接受”按钮时,他们将被重定向到由指定的回调 url oauth_callback(或者/api/auth/default_callback如果没有提供自定义回调 url)

https://www.khanacademy.org/api/auth/default_callback?oauth_token_secret=NmZ5nFEttE8gwnnz&oauth_verifier=gyM9xcZVtg&oauth_token=t6492705587593216

这是我的 GO 代码

const (
    CONSUMER_KEY  = "XXXXX"
    CONSUMER_SECRET = "XXXXXXXX"
)

func GetRequestToken(r *http.Request,unitAttemptID int64)(string,error){
    c := oauth.NewConsumer(
        CONSUMER_KEY,
        CONSUMER_SECRET,
        oauth.ServiceProvider{
            RequestTokenUrl:   "https://www.khanacademy.org/api/auth2/request_token",
            AuthorizeTokenUrl: "https://www.khanacademy.org/api/auth2/authorize",
            AccessTokenUrl:    "https://www.khanacademy.org/api/auth2/access_token",
            ExerciseUrl:      "https://www.khanacademy.org/api/v1/user/exercises",
        })
    callback := "http://127.0.0.1/example/index.php/khan/authorizeRequestToken"
    requestToken, u, err := c.GetRequestTokenAndUrl(callback)
    if err != nil {
        fmt.Println("err is  - ",err)
        return "",err
    }
    fmt.Println("requestToken ",requestToken)
    return u,nil
 }

问题

它总是将我重定向到自定义默认 URL。我想重定向我自己的回调 url。

4

1 回答 1

0

我遇到了类似的情况,通过提供回调作为 URL 查询来解决。

https://www.khanacademy.org/api/auth2/request_token?oauth_callback=yourcallbackurl
于 2016-08-21T16:50:01.563 回答